Great video, thanks for taking the time to put this together this together @TraversyMedia! One small thing. For you insertAt() and removeAt() functions, I'm pretty sure you want to flip the sign and use an || operator to account for less than 0 values. `if (index < 0 || index > this.size)`
I wasn't able to understand all of this after weeks in a computer science course, but 30 minutes into your video I have a much better understanding. You are great at explanations and don't over complicate topics. Thank you so much for this video!
When I first watched this video almost three years ago I was completely lost and could never follow along. I took another shot yesterday and was able to understand it now. If anyone needs help, I will gladly set up a google meet call and explain it with a debugger trace if we need to. Just passing along what others have done for me in the past. Thank you Brad, this was a great explanation!
This dude is a genius. Not just as a developer, but as a teacher. Thanks, Brad! Data structures is by far the most significant hurdle in programming, and I haven't been able to find anyone who can explain the concepts at a level I can understand. It's hard to teach concepts that are basically abstractions built upon abstractions. But from all the resources I've looked at, Brad has come closest, and in JavaScript no less. Bring on more data structures!
nah, his voice is quite boring, it sounds like he wants to just close the editor and throw his monitor out of a window. There is an example of a good teacher/programmer - "net ninja", I strongly recommend to look at his videos.
thank you for always being straightforward and keeping it concise. Been watching your videos and following your tutorials for the past year and they have been an immense help. much love from California!
Excellent introduction to a new topic for me! One edge-case we're missing here for the insertAt() method is a negative value being passed as the index. I found that this can be better handled by setting up the "index out of range" conditional to be: "index < 0 || index > this.size", so we simply return (do nothing with the data value) if the index is less than 0 or greater than the size of the linkedList. In my testing that gives us the functionality we want, without a resulting "Cannot set property 'next' of undefined" if a negative index value is passed.
I think it's great that you've started getting into this topic. I've had a lot of trouble reading about this stuff and then implementing it. But seeing it from you, then thinking about it for a bit, then going back and trying it myself, has really done the trick.
Bro, do all the data structures PLEEEEEEEAAAAAASE. I've been looking for videos that discuss data structures and here you are. God sent. Please do more. Pleeease pleeease
Thanks for the tutorial, I was doing an exercise from Odin Project and can't seem to wrap my head around this list. Your demonstration was very helpful, once I figured out the head variable was the key to this linked List structure, I picked this up real fast. Thanks!
This was very helpful! Today we are learning LInked Lists and React in bootcamp, and this is a great prep for class tonight! Thank you for creating this content!
Best tutorial about linked lists. Not just for JS. I searched for java too and this is the best I saw. Since there is just some difference in syntax every c# or java programmer should watch this too.
Thx you saved my life... I had a project to do for tomorrow and I knew nothing about that ... I was doing Java but the options are the same so thank you very much
You taught so much about something so difficult, even to people like me who don't understand clear English. Amazing! Thanks for simple explanation dude
Hi Brad, I've been watching your video for years. A little surprised seeing you started algos and data structures. Thanks for sharing. Love you, your Chinese fan.
// Insert at index insertAt(data, index) { // If index is out of range if (index > 0 && index > this.size) { ---------this line should be like this----------> if (index < 0 || index >this.size){) return; }
Thanks a lot for taking the time to explain this. I've been having a difficult time understanding the logic behind linked lists, but now I feel like I am getting it :)
00:08 Linked List is a linear data structure using pointers to link elements 02:21 Linked list consists of nodes linked together with references 04:40 Creating and initializing a Node and Linked List class in JavaScript. 07:26 Linked List insertion and printing in JavaScript 10:14 Inserting data into a linked list and understanding the order of insertion. 13:03 Inserting elements into a linked list using JavaScript 15:46 Creating a linked list in JavaScript with inserted nodes 18:30 Adding nodes to a linked list 20:50 You can insert wherever you want, no strict rules, just follow basic principles of linked list. 23:35 Implementing remove functionality for a linked list in JavaScript 26:52 Demonstrating removal and clearing of a linked list. 29:16 Explore logic, problem-solving, and more. Crafted by Merlin AI.
this brings me back (comp sci degree, but never got a job at it)...good stuff! I think maybe for inserting at index the bound check could be index < 0 || index>size? although using a negative index to insert from the end would be a fun exercise too.
@@blasttrash Naah man :), videos are damn good and informative, but he has this amazing white noise like voice, so if you watch during the night, you will fall asleep in no time. Try it :P
Hey, Brad, nice explanation. Thanks a lot for this excellent video. I would like just to make a small correction. It seems your range validation is not totally right. You wrote: if (index > 0 && index > this.size), but it will fail passing negative indexes. I believe the correct would be if (index < 0 || index > this.size). What do you think?
I think that you flipped your comparator on line 46. I think you meant to look like ` if (index > 0 || index > this.size) {` which would account for possible negative indexes provided, whereas checking for positive indexes seems like the case that you are looking to execute on.
This is my getAt method, if you find it more clear: getAtIndex(index){ if(index>0 && index>this.size) return let count = 0 let currentNode = this.head while(count
haha i'd been doing this in school algorithm and data structure, we used to implement double linked list. great to see that you jump into it. this course is really cool and understandable. great work . Love From Cameroon
Hey Brad thank you so much man. It's important you know your work is helping people out here. I am more confident in my Javascript cause of your course.
Hey Brad , just want to thank you for all the efforts you take for us.And please upload the important topics of javascript in the point of interview please.
The way you wrote the Remove method would make it impossible to delete the first item in the list. Here is a version that would let you delete the first item: remove(index){
let current = this.head let previous let count = 0 if (index === 0){ this.head = current.next this.size--; } else{ while (count < index){ count++ previous = current current = current.next } previous.next = current.next } this.size--; }
More algos + data structures please! Also some techniques + tips and tricks on how to solve problems. Your tutorials are very informative and easy to understand.
For ppl who might be confused in the first place how we remove the node from list: if there is nothing that points to a specific node the node and all of the nodes next to it are all gone due to memory cleaning.
very nice to start on Data structures and algorithm there a tons of this but not much more easier than you brad I really enjoying to see your tutorials
Shouldn't early return condition be like (index < 0 || index >= this.size) ? Otherwise if you pass negative value as index it will pass through range check and break data structure.
Hey Brad. Great video. I notice a small problem(?). You use "if (index > 0 && index > this.size)" but if we pass a negative index, the application will throw an error. Instead of "if (index > 0 && index > this.size)", we could use "if(index < 0 || index > this.size)". What do You think?
i had a hard time twisting my head around the logic around the insertAt method during the tutorial, especially at the pt where { node } is being assigned to { previous.next }. what helped me was putting a console log statement after line 67 for node and after 68 for previous to see what's going on. conceptionally, we're creating a new node passing in the data and currentNode, then placing the reference in the previous node's next node property.
i worked with linked lists with c programming language so i might be a bit biased but with js this seems like whole lot of mess compared to c. good video though it's always good to let people know about other tools and structures. keep up the good work.
I have an algorithms and data structures course next semester at college so would like to see more videos like that, discussing various algos and data structures...
Thank you very much Brad.I learn many things from you and i like the way you teaching us.please make a full course on data structure , algorithm and graph...Love from Bangladesh
Line 93: if (index > 0 && index > this.size) should be if (index > 0 && index > this.size - 1) or if (index > 0 && index >= this.size), it won't work for index 4 because the size is 4 and there is no index 4.
In terms of operations and assignments (memory complexity) and this might just me being nitpicky... Wouldn't it be better to not assign the previous in the while loop and just assign the previous outside of it? This was my solution before looking at yours, this seems a bit easier to understand and remember in my opinion as you're just initializing a new node at the time of updating the list instead of the near-circular assignments your code goes through. I love these tutorials of yours, and hope you keep them coming! let current = this.head; // same as yours... let count = 0; while (count < location) { current = current.next; count++; } let previous = current.next; // now it's time to store the previous as opposed to at every iteration current.next = new Node(element, previous); // initialize the new node with the previous as the new next. this.size++ I feel like this might make a difference in a job interview. But again, I might be nitpicking as I'm preparing for a job interview.
please either make a series of all the important data structures or tell us where to find them on the internet(with code in js)...thank you for everything :)
Thanks a lot Brad , we are awaiting your expert videos on exhaustive list of data structures like Stacks,Queues,Circular-Queues,Circular Linked list, More operations on linked list, Doubly linked list and all its operations , Tree,Binary tree, HashTable,HashMap,Binary search tree last but not least AVL trees . This would immensly help the Javascript community over there . With bestest regards-Sumanth
I am a little rusty on algos, data structures, etc but would like to get into this type of stuff, let me know what you guys think about that.
Yes brad please make a crash course or even better a whole data structure series. thanks
Please Continue to do more.
It makes us industry ready
No, You are awesome
Im bad too when it comes to algorithms I keep forgetting about these things
@@alaindimabuyo Yeah, they aren't things I use in my daily projects, however they are great for building muscle in that part of the brain :)
Great video, thanks for taking the time to put this together this together @TraversyMedia!
One small thing. For you insertAt() and removeAt() functions, I'm pretty sure you want to flip the sign and use an || operator to account for less than 0 values. `if (index < 0 || index > this.size)`
Hey Brad please upload Data structures in js crash course or big course ...please
Most awaited. Please do more videos on data structures.
Hey Brad , just want to thank you for all the efforts you take for us.. Would love to have a series on data structure Javascript. Love from India 💓
From East Europe too)
from india too
I wasn't able to understand all of this after weeks in a computer science course, but 30 minutes into your video I have a much better understanding. You are great at explanations and don't over complicate topics. Thank you so much for this video!
When I first watched this video almost three years ago I was completely lost and could never follow along. I took another shot yesterday and was able to understand it now. If anyone needs help, I will gladly set up a google meet call and explain it with a debugger trace if we need to. Just passing along what others have done for me in the past. Thank you Brad, this was a great explanation!
Could you help me with this?
@ let’s set something up
This dude is a genius. Not just as a developer, but as a teacher. Thanks, Brad! Data structures is by far the most significant hurdle in programming, and I haven't been able to find anyone who can explain the concepts at a level I can understand. It's hard to teach concepts that are basically abstractions built upon abstractions. But from all the resources I've looked at, Brad has come closest, and in JavaScript no less. Bring on more data structures!
nah, his voice is quite boring, it sounds like he wants to just close the editor and throw his monitor out of a window. There is an example of a good teacher/programmer - "net ninja", I strongly recommend to look at his videos.
you just blow it!!!! How you even do it ....I must say you are X-MEN Mutant YOU JUST MADE LINKDLIST SUPER EASY WITH MOST CONFUSING MODERN JS WOW
Can you do queues, stacks, trees, graphs, recursion? if possible Just a whole series on Data structures and algorithms
Brad i realy don`t understand why you don`t have at least a million subscribers. You're one of the best youtube IT-blogers (for me you`re the best).
the goat, feeling much more comfortable with LinkedLists after this video. Thank you.
the best video i have seen about linked lists, simple and straight to the point. Well done.
thank you for always being straightforward and keeping it concise. Been watching your videos and following your tutorials for the past year and they have been an immense help. much love from California!
I laughed in this coffee shop when you said, "But don't be a dick about it!" Haha!
Me too..that was great!!! :-)
and here I thought it was only me rofl.
that's a great example of creating and working with Linked Lists on JavaScript. Thank you
Dude this should indeed be a series, best explanation ever on this topic
You make learning so much easy. Really appreciate you taking the time to make me understand this better than most tutorials out there!!!!
I'm a Full Stack student and just wanted to thank you for this video! It really helped me wrap my brain around the concept of Linked Lists👊🏾
Excellent introduction to a new topic for me!
One edge-case we're missing here for the insertAt() method is a negative value being passed as the index. I found that this can be better handled by setting up the "index out of range" conditional to be: "index < 0 || index > this.size", so we simply return (do nothing with the data value) if the index is less than 0 or greater than the size of the linkedList. In my testing that gives us the functionality we want, without a resulting "Cannot set property 'next' of undefined" if a negative index value is passed.
I think it's great that you've started getting into this topic. I've had a lot of trouble reading about this stuff and then implementing it. But seeing it from you, then thinking about it for a bit, then going back and trying it myself, has really done the trick.
Bro, do all the data structures PLEEEEEEEAAAAAASE. I've been looking for videos that discuss data structures and here you are. God sent. Please do more. Pleeease pleeease
Quite glad that you are getting your feet in core CS . It's a rabbit hole from here on and it's really fun as you start diving deeper.
Thanks for the tutorial, I was doing an exercise from Odin Project and can't seem to wrap my head around this list. Your demonstration was very helpful, once I figured out the head variable was the key to this linked List structure, I picked this up real fast. Thanks!
This was very helpful! Today we are learning LInked Lists and React in bootcamp, and this is a great prep for class tonight! Thank you for creating this content!
Best tutorial about linked lists. Not just for JS. I searched for java too and this is the best I saw. Since there is just some difference in syntax every c# or java programmer should watch this too.
Initially i did this data structure on my own and then watched your implementation, and this really makes your brain find different solutions
Thx you saved my life... I had a project to do for tomorrow and I knew nothing about that ... I was doing Java but the options are the same so thank you very much
You taught so much about something so difficult, even to people like me who don't understand clear English. Amazing! Thanks for simple explanation dude
Line 93 change(index > 0 && index > this.size) to if (index < 0 || index > this.size)
Of course as i've been getting into linked lists, here Brad is with a brand new course on it, love it!
Hi Brad, I've been watching your video for years. A little surprised seeing you started algos and data structures. Thanks for sharing. Love you, your Chinese fan.
15:49 "Just don't be a dick about it please." LOL! Thanks for being a real one Brad, and for always producing easy-to-follow videos.
// Insert at index
insertAt(data, index) {
// If index is out of range
if (index > 0 && index > this.size) { ---------this line should be like this----------> if (index < 0 || index >this.size){)
return;
}
I checking for this comment :)
That'd mean it won't insert when index is greater than zero even if it's less than the list size. if (index > 0 && index > this.size) is correct.
Thanks a lot for taking the time to explain this. I've been having a difficult time understanding the logic behind linked lists, but now I feel like I am getting it :)
00:08 Linked List is a linear data structure using pointers to link elements
02:21 Linked list consists of nodes linked together with references
04:40 Creating and initializing a Node and Linked List class in JavaScript.
07:26 Linked List insertion and printing in JavaScript
10:14 Inserting data into a linked list and understanding the order of insertion.
13:03 Inserting elements into a linked list using JavaScript
15:46 Creating a linked list in JavaScript with inserted nodes
18:30 Adding nodes to a linked list
20:50 You can insert wherever you want, no strict rules, just follow basic principles of linked list.
23:35 Implementing remove functionality for a linked list in JavaScript
26:52 Demonstrating removal and clearing of a linked list.
29:16 Explore logic, problem-solving, and more.
Crafted by Merlin AI.
this brings me back (comp sci degree, but never got a job at it)...good stuff! I think maybe for inserting at index the bound check could be index < 0 || index>size? although using a negative index to insert from the end would be a fun exercise too.
First 10 mins was all i needed, my professor couldn't explain this in 3 hrs.
Great tutorials , sir
You made me a real Developer.
Thank you for doing this. Please do them for all of the Data Structures. This will be super useful for people try to start out
This tutorial made linked links easy for me
"Don't be a dick about it" I love how honest you are man...
Thanks Brad, you did an amazing job again. Finally you did data structures and algorithm 👏🏼💪🏻
Thank you Brad. Aye for the series on data structures and algorithms. I watch your videos for dual purpose, to learn and to fall asleep.
r u implying that his vids are boring? :P
@@blasttrash Naah man :), videos are damn good and informative, but he has this amazing white noise like voice, so if you watch during the night, you will fall asleep in no time. Try it :P
Hey, Brad, nice explanation. Thanks a lot for this excellent video. I would like just to make a small correction. It seems your range validation is not totally right. You wrote: if (index > 0 && index > this.size), but it will fail passing negative indexes. I believe the correct would be if (index < 0 || index > this.size). What do you think?
I think that you flipped your comparator on line 46. I think you meant to look like ` if (index > 0 || index > this.size) {` which would account for possible negative indexes provided, whereas checking for positive indexes seems like the case that you are looking to execute on.
This is my getAt method, if you find it more clear:
getAtIndex(index){
if(index>0 && index>this.size) return
let count = 0
let currentNode = this.head
while(count
haha i'd been doing this in school algorithm and data structure, we used to implement double linked list. great to see that you jump into it. this course is really cool and understandable. great work . Love From Cameroon
Can't wait for that. The normal projects have become quite popular here on UA-cam
Thank you! Your video is even better than a book i bought
At 15:05, for the method insertAt(), shouldn't the edge case be if(index < 0 & & index > this.size)
Hey Brad thank you so much man. It's important you know your work is helping people out here. I am more confident in my Javascript cause of your course.
Hey Brad , just want to thank you for all the efforts you take for us.And please upload the important topics of javascript in the point of interview please.
This video was super helpful and informative. thank you Brad!
Amazing man. Thanks for everything. Trully amazing. i grasped everything after carefully watching the video
"just don't be a dick about it please" caught me off guard. So funny. Thanks for the video, helps to hear different people talk about data structures.
Please make a complete series of data structures and algorithms in javascript.
Hi brad Sir, without watch this video because I know you always bring great stuff that is easy to learn. I am greatfull you.
The way you wrote the Remove method would make it impossible to delete the first item in the list. Here is a version that would let you delete the first item:
remove(index){
let current = this.head
let previous
let count = 0
if (index === 0){
this.head = current.next
this.size--;
}
else{
while (count < index){
count++
previous = current
current = current.next
}
previous.next = current.next
}
this.size--;
}
More algos + data structures please! Also some techniques + tips and tricks on how to solve problems. Your tutorials are very informative and easy to understand.
@ 7:10 I saw you almost naming your method insertHead.
Finally some data structures
Thanks
For ppl who might be confused in the first place how we remove the node from list:
if there is nothing that points to a specific node
the node and all of the nodes next to it are all gone due to memory cleaning.
Thank you Brad. You are turning me into an awesome developer.
very nice to start on Data structures and algorithm
there a tons of this but not much more easier than you brad
I really enjoying to see your tutorials
Sweet. This takes me back to my university days. Love it!
Shouldn't early return condition be like (index < 0 || index >= this.size) ? Otherwise if you pass negative value as index it will pass through range check and break data structure.
thank you, your tutorials are helping us a lot a appreciated. 🙏
Thanks brad for your efforts. would love to have a series on data structures and algorithms.
Programming itself is an algorithm and this is useful. Thank you !
Love from India Brad ❤️
Love the video, nice work as always!
Nice LL overview that is easy to follow and understand. Thanks!
thanks for awesome tutorial. but you have to use "break" within getAt() -> in if(count==index) condition. otherwise it traverse till the end.
Hey Brad. Great video. I notice a small problem(?).
You use "if (index > 0 && index > this.size)" but if we pass a negative index, the application will throw an error. Instead of "if (index > 0 && index > this.size)", we could use "if(index < 0 || index > this.size)". What do You think?
C'est la base d'algorithme de liste chaînée. Très bien expliquée
Please, more videos about algorithms and data structures
i had a hard time twisting my head around the logic around the insertAt method during the tutorial, especially at the pt where { node } is being assigned to { previous.next }. what helped me was putting a console log statement after line 67 for node and after 68 for previous to see what's going on. conceptionally, we're creating a new node passing in the data and currentNode, then placing the reference in the previous node's next node property.
i worked with linked lists with c programming language so i might be a bit biased but with js this seems like whole lot of mess compared to c. good video though it's always good to let people know about other tools and structures. keep up the good work.
I have an algorithms and data structures course next semester at college so would like to see more videos like that, discussing various algos and data structures...
Was waiting list data structure from you and finally. Thank you Brad.
Yes, Keep them comin Brad! Damn you are creeping towards 1mil subs! Good job!
Yes! More data structures please
Thank you very much Brad.I learn many things from you and i like the way you teaching us.please make a full course on data structure , algorithm and graph...Love from Bangladesh
THis is pure knowledge :) Thanks Brad
I love the way you play with. You are talented in how to deliver information Thnx 😘 bro
@4:09 - does node.js need to be installed to implement linked lists? ?
Line 93: if (index > 0 && index > this.size) should be if (index > 0 && index > this.size - 1) or if (index > 0 && index >= this.size), it won't work for index 4 because the size is 4 and there is no index 4.
Thanks Brad! This is a good video. Looking forward to learn data structures and algos from you :)
In terms of operations and assignments (memory complexity) and this might just me being nitpicky... Wouldn't it be better to not assign the previous in the while loop and just assign the previous outside of it? This was my solution before looking at yours, this seems a bit easier to understand and remember in my opinion as you're just initializing a new node at the time of updating the list instead of the near-circular assignments your code goes through. I love these tutorials of yours, and hope you keep them coming!
let current = this.head; // same as yours...
let count = 0;
while (count < location) {
current = current.next;
count++;
}
let previous = current.next; // now it's time to store the previous as opposed to at every iteration
current.next = new Node(element, previous); // initialize the new node with the previous as the new next.
this.size++
I feel like this might make a difference in a job interview. But again, I might be nitpicking as I'm preparing for a job interview.
As always, your tutorial is the best. Thank you!
Hey Brad , really love your work . Thanks a lot. A big inspiration for me.
Thanks for this new lesson! I loved it. I would thank much more for other lessons about those programming core subjects applied to JavaScript.
We doing data structures now? Hurrayyy
please either make a series of all the important data structures or tell us where to find them on the internet(with code in js)...thank you for everything :)
Thanks a lot Brad , we are awaiting your expert videos on exhaustive list of data structures like Stacks,Queues,Circular-Queues,Circular Linked list, More operations on linked list, Doubly linked list and all its operations , Tree,Binary tree, HashTable,HashMap,Binary search tree last but not least AVL trees . This would immensly help the Javascript community over there . With bestest regards-Sumanth
woww sir...awesome !!!..i recently started learning data structure and algorithms and took a break from web dev
Hi Brad, nice video! I think insertAt should test for index < 0 || index >= this.size and return
This is the best explanation I got.. thanks
Yes! More of these please. Maybe some video about pointers and stuff like that.