JavaScript Under The Hood [2] - Execution Context

Поделиться
HTML-код
  • Опубликовано: 20 дек 2024

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

  • @DesignfulDev
    @DesignfulDev 2 года назад +88

    Wow, that made hoisting so much clearer to me! I had on my mind the "moved-to-the-top" concept, but this makes much more sense. Great series Brad! Thank you for everything!

    • @giulianocrivelli9272
      @giulianocrivelli9272 2 года назад +2

      Same for me! It blew my mind 🤯

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

      Came here to write the same thing

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

      same same for me all these years, wow!

  • @deejaydev
    @deejaydev 2 года назад +13

    This is one of the most important topics I didn't care to understand when I first started learning to code... Today It's what I am learning. Thank you, Brad

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

      "...one of the most important topics I didn't care to understand when I first started..."
      Exactly my thought, too.

  • @Sloth740
    @Sloth740 2 года назад +6

    These "Under The Hood" videos are great! The way you go about explaining how they work is tremendously helpful. Thank you!

  • @saman6199
    @saman6199 2 года назад +9

    This series is one of the best series I’ve ever watched, I wish you could make a full series of JS under the hood not just a few parts, thanks for your hard work and dedication Brad.

  • @johnyepthomi892
    @johnyepthomi892 2 года назад +44

    I can’t express how much important it is to look at the call stack when debugging.
    P.S: Need more of such under the hood videos.

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

    I admire your clarity. This video shines at realistically explaining under the hood concepts. Hoisting explanation is rational and highly practical. Thanks Brad :)

  • @yoooo4177
    @yoooo4177 5 месяцев назад

    This is the best series I’ve ever watched.
    Diagrams are effectively used to back up explanation and make it so easy to understand.
    Thank you so much for making this content.

  • @krckyboy
    @krckyboy Месяц назад

    I'm going through some JS theory for interviews, and I have to share that this is by far the best video explanation of hoisting. Thank you, Brad!
    Also, just to point out that I am revising my theoretical knowledge, regardless of the fact that I have over a decade of experience, so this content is really relevant!

  • @universecode1101
    @universecode1101 2 года назад +7

    this series, takes me back to when I was watching your videos, to understand array methods, and the basics of Js. Often it happens to leave out the theory and go directly to practice.

  • @daviddantefrank
    @daviddantefrank 2 года назад +2

    WOW!!!!! Can't express how glad I am you're doing this series. I love it so much. I'm learning NodeJS and trust me when I say the concepts are essential and I've looking for something like this. Not necessarily how to code, but under-the-hood concepts give you a better understanding of your code. I could keep re-watching these videos over and over again. Looking forward to more of these. Thanks, man! You're the best! Keep it coming!

  • @andresndergaard1712
    @andresndergaard1712 2 года назад +6

    This was really insightful and I love that you present the "theory" and the follow up with practical examples. Beautiful! 😀

  • @pranjalsrivastava1191
    @pranjalsrivastava1191 9 месяцев назад

    Damn good. No one has ever explained in such a good way. This makes me understand things rather than simply learning them.

  • @DaveCollison
    @DaveCollison 2 года назад +7

    Best explanation of hoisting and global/block scope I've seen. Thank you.

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

    a lot of videos out there are talking on the same concepts, but your videos always have something new

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

    Brad you're my favorite RUclipsr much love from Kenya.

  • @prince5922
    @prince5922 15 дней назад

    At 1:43 there are a few corrections that can be made
    1) Setup memory heap for storing variables and function references. [ Function references aren't stored in the heap, the actual functions themselves are stored in the heap and references are stored in the stack memory ]
    2) The scope chain is also setup here but it isn't mentioned
    3) Point 2 and 3 could be merged into 1

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

    bro you made hoisting so much clear.. it really blew my mind

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

    I was doing another course and this part had me stuck. You really helped me understand this quickly. I appreciate what you do giving out content like this for free.

  • @aayushdahal7955
    @aayushdahal7955 5 месяцев назад

    It is important to mention that local variables are not stored in the Memory Heap but are rather stored in the Call Stack. It is inefficient to store local variables of functions in the Memory Heap since they are not accessed outside the function scope. Storing local variables in the Call Stack and "forgetting" about it once the execution context of the function is popped is how modern JS engines go about it. Great video!

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

    This is by far the best clarification on 'Hoisting ' thanks for making it really easy to understand

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

    Simply incredible! Very well taught and paced videos. Congratulations, Brad!

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

    Because of this man and his channel i learned js and react.js and now I got a job with DOD ICE

  • @TheDoubleMvp
    @TheDoubleMvp 10 месяцев назад

    Brilliant explanation. Probably the best and most concise videos on the topic I've seen.

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

    It's a really great series. You explained the information and topics that you can't find in most places, with great examples. It's really useful.

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

    wow - first time I've seen a conceptual explanation that integrates scope and hoisting. kudos!

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

    I'm really digging these JS Under the hood vids. Great Work!

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

    Great start to the series! I hope you plan to go under the hood with closures; this feels like the perfect series for that. Great refresher for me (and you taught me about let/const are actually hoisted locally). 👍

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

    In the midst of the video I was dead set on asking why you were using var instead of let/const, I'm glad you've explained it. Thanks for the video, it gives much insight into what's going on when a D3 viz is produced (that's just what I'm dealing with on a daily basis, so my natural point of reference).

  • @burakkepuc
    @burakkepuc 2 года назад +5

    After this series, nodejs, under the hood please. What is single thread non-blocking async system etc.

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

    Wow!! This really put things into perspective, regarding Hoisting, for me. Loved the video! Thanks Brad!!

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

    Short, detailed and well delivered.

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

    All your videos, especially your explanation is amazing! Thank you for this channel!

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

    Thank you so much !
    In my view the best practice of JavaScript about using hoisting goes through coding with strict mode(never use a function or a variable before its initialization). which is logic & makes your code more readable.
    I encounter this whenever I'm using for example the arrow functions while declaring it as 'const'

  • @prince5922
    @prince5922 14 дней назад

    5:22
    During the creation phase of the function execution context, function arguments are allocated space and initialized with their values if passed, or set to undefined if not passed. Brad says they are set to undefined which is not true, they are passed so in the creation phase they are initialized.

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

    Great video, Brad; I still learnt something new, even though I thought I knew this topic already. Also, I love that you made use of the browser to drive the explanation home

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

    Man this really made hoisting feel less like its some black magic that js does. Thanks a lot!

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

    Really super explanation, Brad. (And I finally got an intro into using the Sources tab of Chrome Dev Tools, which is a real plus.)
    I noted, BTW, that when I wrote getSum() as an arrow function -- instead of as a 'regular' function -- it didn't appear in the Global object; instead, it was in a Script object immediately above Global (and eventually below Local). I haven't dug into that yet, but seems like something else that's important to learn.
    (EDIT: And no surprise that Brad cleared this up in the final section.)

  • @ebcoutinho
    @ebcoutinho 11 месяцев назад

    Thank you so much for the content. This is not a simple concept to explain but you did it so well that I was able to understand it like it was easy

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

    Even though I know what JS code does, I always wanted to know what is actually going on under the hood. Great content!

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

    Thank you for the technical look at hoisting. Now it actually makes sense

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

    Hey Brad...been following along with you for a couple years now since I started coding. I'd be lost without your tutorials. Thanks for all your hard work. More Laravel TALL stack videos if you are looking for suggestions.

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

    I've fallin into the JS engine, Runtime, BrowserWebAPI/nodejsC++API, Eventloop, Call Stack, Microtask-, Macrotask-, Task-, Job-Queue Rabbithole. This Under the Hood videos really help to join some dots together. Thanks Mate & Kind regards !

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

    really good explanation, finally understood what was behind hoisting!

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

    Hello Brad,
    var variable lifecycle vs let variable lifecycle chart at 13:38, is not clear and conflicting to previous slide browser example where in creation phase itself let variable x is stored with undefined value, in block scope. Can you please clarify on this one??

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

    Amazing series of videos. Best what I have seen!

  • @HarshBairagi-c4p
    @HarshBairagi-c4p 5 месяцев назад

    This video really helped me a lot, lots of love from India ❤

  • @anag2125
    @anag2125 11 месяцев назад

    As usual, your videos are super helpful and clear. Thank you so much!

  • @krantibrid4391
    @krantibrid4391 2 месяца назад

    wow, learned a new thing in a very easy yet detailed manner. Thanks!

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

    Great stuff Brad, very much appreciated. Very insightful.

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

    If function are created in create phase and added to global scoop and (let/const) are being added to a Script scoop... Where are arrow functions stored (const fct=() =>console.log("arrow"))?

  • @rashedinislam4668
    @rashedinislam4668 8 месяцев назад

    You're a genius man, thanks for explaining in details.

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

    Hoisting can be quite useful when laying out react components. Say you have a ListComponent written as a functional component and then you can write the component items rendered in the list just below and don't worry about the order.

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

    This should be in a playlist

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

    Dear Brad, you have already made me a JS addict and I'm not sure what'll will happen to me after this series.
    Kindly request you to post a video on illustrating the execution of asynchronous functions in JS event loop may with a 'setTimeout' or any other callback function. Doesn't matter how well I know the stuff, I always learn a new thing or correct some of the misunderstandings I have, each time I follow a video of yours (E.g:- Hoisting of 'let' & 'const' variables)

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

    Brad, Thank you for putting out videos for us. I have learned so much and use some of your templates too.
    Thanks a bunch!🙂🙋🏻‍♀️

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

    Truly amazing. Your ability to teach.

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

    This feels almost illegal to know, so good! Would you suggest a few books for learning advanced JS concepts?

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

    Simple and clear. Thank you!

  • @rougegorge3192
    @rougegorge3192 2 года назад +2

    Thank you, under the hood is so interesting !And Well explained ❤

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

    Thank you so much it clears a lot of concept. Will be waiting for your more videos like this.

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

    Very elegant explanation, thank you!

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

    Clear and just amazing. Thank you brad.

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

    I understand it directly , very good explanation

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

    fantastic as usual 👏🏻👏🏻👏🏻 many thanks Brad

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

    These videos are great! Please keep it up

  • @Mr.Robots
    @Mr.Robots 2 года назад

    this a grate video! Tks from Brazil man!

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

    Just WoW, I don't have any other words🙌🏼

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

    Great explanation - thank you very much for the nuance of the topic as well!

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

    One like is not enough for this video. Thanks!

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

    out of the box🔥 very impressive 👍👍

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

    Wow these area great clarifying episodes. Thank you so much!

  • @CC-ij3ky
    @CC-ij3ky 2 года назад

    Perfect explanation Brad 🙏 thanks mate

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

    I always declare functions above because I was learning programming on "basic" and "pascal")
    P.S. This lessons very cool!

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

    This is a really promising series.

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

    Love the content brad thanks love to see more of this kind of stuff would it be possible to touch upon computer science topics as-well?

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

    I dont know how ya do it Trav but ya do it..thanks for the video!

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

    Good thing I subscribed to you.
    Already picking the fruits of that decision. 👍

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

    Love this series keep it up...

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

    This was super helpful!! Thank you!!

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

    after watching this video many questions popped in my brain:
    for example what's undefined in memory. how many bytes does it occupy?
    and when you assign that variable a value that needs to be stored using more bytes that reseved what happens?
    is the stack in JS in the VM or does it get copied directly to the virtual stack of the OS?

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

    Legendary explanation.

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

    Thank you sir!
    Please start a series on DS and Algo in Javascript

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

    How are arrow functions treated during the creation phase, are they treated as normal functions or as variables?

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

    Hi Brad,
    Amaizing videos! Maybe closure also should be it this tutorial.

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

    The greatest explainer

  • @englishbasicswithchris
    @englishbasicswithchris 5 месяцев назад

    everything makes so much sense now 😭🙏🙏🙏

  • @k.ksharma4457
    @k.ksharma4457 2 года назад +1

    awesome explanation❤

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

    thank you for the really clear explanation!

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

    This is Insanely helpful!!! Thank you sir!

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

    Fall-stack 🤣 You are the best!

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

    awesome series!

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

    This video was so useful, thank you

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

    Really well explained!

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

    super good deep knowledges! did you read it from books? if yes which was it?

  • @kelechi.E
    @kelechi.E 7 месяцев назад

    Wow made execution context clearer

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

    Can you provide the reference where i can read more about this stuff?

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

    Perfect explanation

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

    cool, I can't wait to next ep

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

    God bless you Brad

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

    I think it is better to put [red block "temporal dead zone"] where [green block "Initialize"] is and [green block "Initialize"] where [red block "temporal dead zone"] is.
    Declaration and Initialization should be in creation phase and then temporal dead zone then Assignment in execution phase.
    Please acknowledge me if I am wrong.
    Thank BRAD❤