Комментарии •

  • @nuttaphonr.6498
    @nuttaphonr.6498 3 года назад +33

    Thanks for concepts about reference vs primitives type and heap/stack too!
    3:39 string is primitive (copy by value)
    6:47 object ,array are references type
    7:05 primitives are store on stack
    7:35 references are store on heap (take longer to access, store bigger amount of data)
    8:40 stack (store like stack 'push on top')
    9:16 heap (store pointer)
    10:48 it assign a pointer not value
    14:50 Object.assign create new object and merge with existing one
    16:07 Object.assign doesn't deep clone
    17:26 may use Lodash to clone instead
    19:04 copy array

  • @josiahtobas9172
    @josiahtobas9172 4 года назад +63

    Yeah man, you did a great job at explaining this stuff, I thought I understood it before but now I really understand it. God bless you 100 man. Peace.

  • @akshhatsrivastava1972
    @akshhatsrivastava1972 4 года назад +31

    That stack and heap explanation was very insightful. Thank you!

  • @energan2184
    @energan2184 3 года назад +2

    Max, I don't know how you make explaining this so simple. If I would try to transfer what I have learned, I would confuse the hell out of the people listening. Thanks a lot for all the content you provide and for making many complicated subjects look actually, again, simple.

  • @88spaces
    @88spaces 3 года назад +8

    Max, you're very good at explaining complex topics in a simple way that makes them easier to understand. Thanks for the video.

  • @samirergaibi874
    @samirergaibi874 5 лет назад +14

    Thank you for this visual explanation, really made me understand. The pictures of the Stack and Heap sure helped as well ! :)

  • @73dines
    @73dines 4 года назад +3

    This is one of the most confusing tutorial i've ever watched.
    And I have to watch it again.
    And again.
    But thank you very much. Well done.

  • @jimmysignature915
    @jimmysignature915 2 года назад +1

    This is excellent, the addition of the stack and heap explanations really clear this topic up. One of those things that is both easier and harder than it looks...

  • @eruston
    @eruston 5 лет назад +3

    Very good explanation. I remember in C++, for every constructor, you have to have a destructor, otherwise the objects will 'pile up' on the heap = memory leak.

  • @sydneyhill655
    @sydneyhill655 2 года назад

    The stack and heap explanation and illustration for these concepts made lightbulbs go off for me. Thank you.

  • @cdac1645
    @cdac1645 4 месяца назад

    This is the best and most concise explanation I have seen on RUclips. Thanks

  • @RaterisimoCBA
    @RaterisimoCBA 3 года назад +1

    Awesome video, came here because in your Udemy course about Angular you said we should look this subject up (Primitive values vs Reference values). I think I got the main ideas pretty well, I followed your coding in JSbin myself. Thanks Max !

  • @JuanFVasquez
    @JuanFVasquez 6 лет назад +3

    Wow Max, I thought I knew what primitive and reference types were. You simply took these concepts to a whole new level! I didn't know about the stack and the heap at all! Thanks for explaining these amazing concepts.

    • @academind
      @academind 6 лет назад +1

      Thank YOU Juan for such an awesome feedback, really happy to read comments like yours :)

  • @berkan8518
    @berkan8518 4 года назад

    Brother ! I really respect you. You are the best educator of all time. If you weren't born i couldn't understand these things because there is noone explain these things very specific and easy as you. Thanks

  • @naythaniel
    @naythaniel 7 лет назад +103

    The short version, not 20 minute version of this, is that primitives (things that aren't containers for multiple separate values) make copies when passed to a function; while objects (containers for multiple separate values) make *references* to the object when passed to a function. In other words, when something is likely to be relatively small, it's okay to make a copy, but when it can potentially be enormously large, you just say where the thing is. Remember, primitives = copies && objects = references (which means addresses || pointers).

    • @prathameshsawant843
      @prathameshsawant843 5 лет назад +1

      You can use destructuring to copy object. Although for the array that is stored as a property inside object you will have to use destructuring again.

    • @augiefash2239
      @augiefash2239 4 года назад +1

      Brilliant. I've spent the last 3 days trying to grapple with / grasp this, and you pretty much just saved me. Thanks bud!

    • @jeewanmaharjan2712
      @jeewanmaharjan2712 4 года назад

      You deserve award for this explanation .

    • @inote4266
      @inote4266 4 года назад +1

      @@prathameshsawant843 that's called deep cloning

    • @rickvian
      @rickvian 3 года назад +8

      I recommend go through this 20 minutes cause it is worth it!

  • @tezdogs
    @tezdogs 2 года назад +1

    This actually helped me understand how to use pointers and reference values in C++, too!
    Thank you Max! :D

  • @dhanooshbargav7215
    @dhanooshbargav7215 3 года назад

    You did the explanation as best as you could. Thanks a lot!

  • @Concentrum
    @Concentrum 7 лет назад

    I'm impressed by your fluent and well-prepared explaining. your gestures are also very entertaining haha, thanks for doing what you do.

    • @academind
      @academind 7 лет назад

      Nice to hear that, thanks so much ;)

  • @dukewellington5222
    @dukewellington5222 4 года назад

    Great explanations. Keep up the good work, Max!

  • @naqeeburrahman4709
    @naqeeburrahman4709 4 года назад

    That makes sense. thank u.
    Earlier I was bit confused why u took long steps to copy in one example of your react course.

  • @ihortsarenko3119
    @ihortsarenko3119 5 лет назад +2

    amazing as always. Thank you, Max. Maybe it could be a little bit hard for newbies, but that's the best explanation I saw for about a year of learning JS

    • @academind
      @academind 5 лет назад

      Thanks a lot Irop!

  • @baharehbadiei7698
    @baharehbadiei7698 19 дней назад

    Perfectly and deeply explained! Loved it. Thanks :)

  • @scottsaccenti
    @scottsaccenti 4 года назад

    So helpful. A little thing, yet something that has trouble staying in place in my mind. Thanks.

  • @OmarOnAWave
    @OmarOnAWave 2 года назад

    Amazing explanation man ! wow you really have a talent to break things down to understandable bits

  • @sandeshjadhav2188
    @sandeshjadhav2188 4 года назад

    Thank you for this visual explanation, really made me understand.

  • @pantelisvasileiadis2858
    @pantelisvasileiadis2858 4 года назад +1

    thank you! cleared things up in my head

  • @gabrieljoshuapaet2572
    @gabrieljoshuapaet2572 7 лет назад +1

    Thank you so much Max for the great explanation I now understand the difference of primitive types and reference types. I really learn a lot in your videos keep it up! 👍

    • @academind
      @academind 7 лет назад

      Really happy to hear that this video was helpful! :)

  • @robdorn420
    @robdorn420 7 лет назад +32

    Thanks Max, the best explanation I have ever got on this subject.

    • @academind
      @academind 7 лет назад +2

      Really amazing to hear that, thanks so much Rob!

    • @fishworld2021
      @fishworld2021 3 года назад

      ruclips.net/video/SnXR6kX1SqA/видео.html try this

  • @sashab4432
    @sashab4432 2 года назад

    The explanation was soo good. Thank you!

  • @nadiaharrismartinez
    @nadiaharrismartinez 2 года назад

    That was so helpful. Great explanation. Thanks so much!

  • @aneshkl
    @aneshkl 5 лет назад

    Thank you so much for this video. It was explained so well. I don’t think I’ll ever get confused between the two.

    • @academind
      @academind 5 лет назад

      Happy to read that the video was helpful for you Aneesh, thank you :)

  • @mimoid7862
    @mimoid7862 5 лет назад +1

    It was quite long but very good video. You explain everything clearly and slowly with good examples of what you talking about. I didn't know some of these things :)

    • @academind
      @academind 5 лет назад

      Thank you, happy to read that you liked it :)

  • @53strat55
    @53strat55 2 года назад

    Loved this explenation. My head is indeeds teaming but the core principle is clear. Will rewatch and practice with this.

  • @karnpratapsingh8860
    @karnpratapsingh8860 2 года назад

    awesome explanation!
    Really helpful. Thanks for it.

  • @leemacpherson
    @leemacpherson Год назад

    Great explanation. Super important concepts.

  • @Marcel-dt5du
    @Marcel-dt5du 6 лет назад

    Thank you! Did I understand you correctly at the end; .slice() also does _not _create a new deep copy of an object in the case of an array of objects?

  • @GaneshKumarButcha
    @GaneshKumarButcha 7 лет назад

    I came across the same problem, glad you put the video at the right time.

    • @academind
      @academind 7 лет назад

      Haha, awesome to hear my timing was right Ganesh :D

  • @TheSkis
    @TheSkis 7 лет назад

    Great explanation! Thorough and covered all feasible cases

    • @academind
      @academind 7 лет назад

      Thanks a lot for your nice feedback Ben!

  • @utsavkumar4381
    @utsavkumar4381 6 лет назад

    Good that you covered the subject with Stack and heap explanation. Thanks Max :)

    • @academind
      @academind 6 лет назад

      Thanks a lot for your great feedback Utsav, really appreciate that :)

  • @Hadoitz
    @Hadoitz 5 лет назад

    Thanks man, your explanation has saved me from hours of headache.

    • @academind
      @academind 5 лет назад

      Really great to read that Hadyan :)

  • @huzeyfetas
    @huzeyfetas 2 года назад +1

    I have 1.5 years of experience as a software developer. I watched this video about 1.5 years ago. and i said ok i got it. now i'm watching it again and now i'm saying "okay now i get it". I came here from Max's svelte.js course. why do we need to use assignment operation in svelte which does not use push to work with arrays, now everything is very clear. I hope there is no problem in my project where I used the object.assign operation almost on the ground 1 year ago while cloning an object :) Now I understand the value of the deep copy operation. Seeing the questions and answers on stackoverflow I realized that this is a real problem. (My english is not good enough, I hope I was able to express myself. )

    • @jtaylor8606
      @jtaylor8606 Год назад +1

      Your comment makes perfect sense. Nearly every comment on here is saying how simple this explanation makes it to follow but, honestly, I doubt if even 50% of those people really understand it properly. I've watched it multiple times and there are still a couple of parts that I don't think I'm understanding fully.

  • @muradprohere
    @muradprohere Год назад

    happy to learn from you mr max thank you for the explanation

  • @michelleBSkiLLz
    @michelleBSkiLLz 2 года назад

    nice and easy explanation! Thanks!

  • @saltech2024
    @saltech2024 Год назад

    Great
    And this is what I have to say
    In primitive data types or values, once you get a copy from the declared value its change will not affect the copied variable
    In reference data type any changes done to the parent variable will alter the variable that's created from it

  • @msalah5214
    @msalah5214 4 года назад

    Thank u for this video. I was wondering before how could i handle this cases in my code. Now its very clear about the object references. You are very helpfull... thank youu..

  • @dheerajmantena3307
    @dheerajmantena3307 6 лет назад

    Object.assign({},deepMind.Slice());
    Superb in depth explanation You are the best for ever max .
    Thanks again

    • @academind
      @academind 6 лет назад

      Thanks a million for your fantastic feedback Dheeraj, so cool to read that you like my videos :)

  • @sourishdutta9600
    @sourishdutta9600 6 лет назад

    You all time amaze me.You the best I have ever seen.You could also explain Object.freeze() to this lecture.Anyways mutable vs immutable great.I am a big fan of yours.Share your knowledge Sir Max.

  • @yuriiyakhnytsia2292
    @yuriiyakhnytsia2292 2 года назад

    Thanks a lot, now I have a clear understanding of what happens with the state in redux, and now I knew that I have a great number of issues with the store of my project, just because I copied the state with spread (...) operator. But I have a state not only with primitive types but with objects and arrays either, and in the future, it may cause problems.

  • @tymothylim6550
    @tymothylim6550 3 года назад

    Thank you very much for this video! :) It was very interesting and I learnt a lot!

  • @BeeshoStudying
    @BeeshoStudying Год назад

    thank you for the video and the simple explanation

  • @ramiahviknesh3014
    @ramiahviknesh3014 6 лет назад

    Thanks, Buddy . One of the best explanations I have had for primitive and referenced values. The only thing that was missing was the destructuring method (ES6) to clone an object or an array.

    • @academind
      @academind 6 лет назад

      You're right, that's a great way of cloning an object or array

  • @rohil3023
    @rohil3023 3 года назад

    Great explanation.I think i understood most of what you said 👏

  • @bonzo6989
    @bonzo6989 3 года назад +1

    Thanks bro it is really helpful. The only thing missing here is possiblity of using JSON to make a deep copy.

  • @paulparton404
    @paulparton404 5 лет назад +17

    A shorthand way to clone the object and its array with the spread operator
    const person3 = {
    ...person2,
    hobbies: [
    ...person2.hobbies
    ]
    }

    • @yezhang1927
      @yezhang1927 5 лет назад +1

      I think it works if you just use this:
      const person3 = {
      ...person2}

    • @brookspatrader
      @brookspatrader 4 года назад +1

      ​@@yezhang1927 No, with your solution, it not works. Paul's right.

    • @bhupenderKeswani
      @bhupenderKeswani 3 года назад

      A better way to solve this is
      const person3 = JSON.parse(JSON.stringify(person2));

  • @chrsbll
    @chrsbll 7 лет назад

    Extremely well explained. Thank you.

    • @academind
      @academind 7 лет назад

      Really happy to hear that, thanks so much Chris!

  • @sgt-en4orcer92
    @sgt-en4orcer92 5 лет назад

    Thanks, great explanation!!

  • @boristheblad
    @boristheblad Год назад

    Nice to know that, well explained. thanks!

  • @abhishekshimpi214
    @abhishekshimpi214 2 года назад

    Thank u so much dude u completely cleared my concept

  • @NICHLE.
    @NICHLE. Год назад

    Hi Max, thanks for great tuitorials. I am just wondering why didnt you mention spread operator as option to object.assign method because of its deep-cloning ability

  • @OscarCedano
    @OscarCedano Год назад

    Thank u bro! This video really helped me!

  • @nitram_nosnibor
    @nitram_nosnibor 3 года назад

    Maxi-baby you explained that REALLY well. Thank you, I totally get it now 👍🏻

  • @syedhaiderraza9687
    @syedhaiderraza9687 5 лет назад

    Great, Clear my confusion. Thanks a lot

    • @academind
      @academind 5 лет назад +1

      That's really great to read, thanks a lot for your comment!

  • @pushpaaji
    @pushpaaji 7 лет назад

    Recently started angular. Getting issues just because of object and arrays are getting changed. you saved me. thanks for the great tutorial.

    • @academind
      @academind 7 лет назад

      Awesome to hear that, thanks for your great review!

  • @mertciflikli
    @mertciflikli 4 года назад

    This helped a lot. Thanks!

  • @nathanclassen8489
    @nathanclassen8489 4 года назад

    Very helpful, very clear.

  • @petrockspiracy3120
    @petrockspiracy3120 5 лет назад

    That was a fantastic explanation and use of example.

  • @adamscantley
    @adamscantley 7 лет назад

    This is absolutely fantastic. Thank you!

    • @academind
      @academind 7 лет назад

      Thanks so much Adam, I'm happy you're liking it!

  • @waseemansar4077
    @waseemansar4077 7 лет назад

    wow you make this concept very simple. Thanks Max

    • @academind
      @academind 7 лет назад

      Happy to hear that this was helpful! :)

  • @Scout-uj1fj
    @Scout-uj1fj 5 лет назад

    Brilliant VDo...tysm :)

  • @poongudivanan
    @poongudivanan 5 лет назад

    Valuable information... !!!! Thanks great..

  • @dancewithdevils99
    @dancewithdevils99 2 года назад

    coming from the react course , very very useful , is there any videos like this topic to understand more everything deep in stack .!

  • @davida.7586
    @davida.7586 6 лет назад

    Very good explanation.
    Thank you!

    • @academind
      @academind 6 лет назад

      Great to read that you like it David, thank you!

  • @emanfinding2603
    @emanfinding2603 6 лет назад

    Pretty clear, Thanks Max!

    • @academind
      @academind 6 лет назад

      Very happy to read that Eman, thank you for your comment!

  • @degreman
    @degreman 2 года назад

    Thats a Good explanation, thanks to you

  • @mk17173n
    @mk17173n 3 года назад +1

    When we said var SecondName = name even though the values are the same are the two values located in different places in memory? Are there two different 'Max' in two different memory locations or are they referring to the same 'Max' in the same location in memory?

  • @TechSquidTV
    @TechSquidTV 7 лет назад

    Amazing video as always. Sharing on Twitter!

    • @academind
      @academind 7 лет назад

      Awesome, thanks so much!

  • @DharmendraSingh4ever
    @DharmendraSingh4ever 3 года назад

    Thank you very much... You are great ✌🏼👍🏼

  • @krunoslavbanovac4356
    @krunoslavbanovac4356 7 лет назад

    Very well explained. Missed your vids Max.

    • @academind
      @academind 7 лет назад

      But my videos were never paused? Anyways, happy to hear you liked this one!

    • @krunoslavbanovac4356
      @krunoslavbanovac4356 7 лет назад

      But they were paused for me. After watching your React and Redux tuts, thanks to you, I was too busy working on a project :D

  • @to-nd7yl
    @to-nd7yl 4 года назад

    well done and thanks great explanation bro keep it up

  • @bronstein007
    @bronstein007 Год назад

    Great video diving deeper into reference types and reference values! I was so tired of just hearing people say, "it's a reference type, they aren't the same". Actually seeing how it works in the stack and heap memory space was SO valuable.
    Question about Object.assign and slice methods for copying objects and arrays: Would an equivalent (and potentially cleaner way of doing it) just be using the spread operator for both?
    Thanks!

  • @codebuilders9081
    @codebuilders9081 4 года назад

    that was a pretty nice explaination of a complex concept.

    • @academind
      @academind 4 года назад +1

      Happy to read that, thank you!

  • @pankajsharma9801
    @pankajsharma9801 4 года назад

    Thank you so much.
    You clear lot of important points for me. 😊👌

    • @fishworld2021
      @fishworld2021 3 года назад

      ruclips.net/video/SnXR6kX1SqA/видео.html

  • @Incognito-ig7ld
    @Incognito-ig7ld 3 года назад

    Thank you STRONG LESSON.

  • @djelasrca8091
    @djelasrca8091 Год назад

    Super useful. Thanks

  • @BrianGreigRWD
    @BrianGreigRWD 7 лет назад

    Great explanation Max. Very succinct. I would add that other array prototype member functions are also immutable (filter, map, reduce). Added you as a recommendation on my channel. Cheers.

    • @academind
      @academind 7 лет назад +1

      That's true, great addition! I'm happy you're liking it Brian!

  • @lakhveerchahal
    @lakhveerchahal 3 года назад

    Thanks as always Max

  • @user-fj7bo8gh8e
    @user-fj7bo8gh8e 6 лет назад

    Awasome. The best explanation!

    • @academind
      @academind 6 лет назад

      Thank you so much, I'm glad you liked it!

  • @aakritigoyal1432
    @aakritigoyal1432 3 года назад

    U explained it so well❣💯

  • @rohancherry
    @rohancherry 6 лет назад

    excellent explanation, thank you Max.

    • @academind
      @academind 6 лет назад

      So happy to read that Ravi thank you very much!

  • @sandeeprao1651
    @sandeeprao1651 7 лет назад

    Love the way you explain. Thanks Max. Also, halfway through your Angular4 Udemy course. Loving it.

    • @academind
      @academind 7 лет назад

      Really awesome to hear that Sandeep, thanks for your feedback! :)

  • @ericellison2413
    @ericellison2413 6 лет назад

    Holy shit max , you are amazing , i was confused about heap and stack for months , you are my man .....

    • @academind
      @academind 6 лет назад +1

      Really great to hear you're liking it - thank you so much! :)

  • @bhrugudesai
    @bhrugudesai 5 лет назад

    very well explained.

  • @gabrielhernandez8457
    @gabrielhernandez8457 7 лет назад +5

    Hey Max!, really nice udemy courses that you have... greetings from Chile!

    • @academind
      @academind 7 лет назад +1

      Really happy to hear you're liking them Gabriel - thanks for your amazing feedback!

  • @jamesbest2221
    @jamesbest2221 7 лет назад

    Fantastic Max! So many of us are moving from server-side to both front & back-end. And these bite sized videos are great. I think(?) I have all of your courses, but do you have one on Javascript tips like this for Angular devs? If not, that would be a great course (eg) "Javascript for Angular Developers". ...just a thought...you know, in ALL your spare time! : P

    • @academind
      @academind 7 лет назад +1

      Interesting suggestion. I don't have such a course and I don't know if I find the time to plan & create one but I'll certainly release more snippets like this one here on RUclips.

  • @chinthanagunasekara7469
    @chinthanagunasekara7469 5 лет назад

    Thaks for the valuable information

  • @andrew5407
    @andrew5407 4 года назад

    Does the Array pointer live on the stack or in the heap ?

  • @prabhasthakur9776
    @prabhasthakur9776 2 года назад

    One silly doubt, when name variable is updated from 'Max' to 'Chris' then on the stack whether the 'Max' is replaced to 'Chris' or a new copy of 'Chris' is made on top of the stack? Thanks.

  • @HaifengZhu-pn3uq
    @HaifengZhu-pn3uq 3 месяца назад

    Max' content is always great

  • @KalpeshPanchal
    @KalpeshPanchal 7 лет назад

    Very well explained, thanks for sharing your knowledge with us. :-)

    • @academind
      @academind 7 лет назад +1

      You're welcome Kalpesh, I'm happy that you're enjoying it!

  • @frontend1662
    @frontend1662 7 месяцев назад

    Amazing video, I'll recommend ❤