JavaScript Visualized - Event Loop, Web APIs, (Micro)task Queue

Поділитися
Вставка
  • Опубліковано 23 тра 2024
  • Learn how the browser event loop, task queue, microtask queue, and Web APIs work together to enable non-blocking, asynchronous JavaScript.
    - / lydiahallie
    - buymeacoffee.com/lydiahallie
    - / lydiahallie
    - / lydia-hallie
    - / theavocoder
    Timestamps:
    0:00 Intro
    0:32 Call Stack
    1:18 Single-threaded Problem
    2:01 Web APIs
    2:47 Callback-based APIs
    4:04 Task Queue
    4:39 setTimeout
    6:22 Microtask Queue
    8:40 Promisifying Callbacks
    8:57 Challenge
    10:52 Recap
    11:58 Outro

КОМЕНТАРІ • 961

  • @theavocoder
    @theavocoder  Місяць тому +159

    Btw if you're in a hurry you can just fast-forward to 10:52 haha! I use Apple Keynote for everything.
    💡Just a heads up: I explain these concepts in a way that personally helped me conceptualize the processing order.
    E.g. the event loop doesn't directly "prioritize" the microtask queue, rather they're just processed and completed before the event loop continues to the next task. One iteration of the event loop is executing a single task, processing all available microtasks, and then updating the rendering of the page if needed (that's not covered in this video, might be another video, things like requestAnimationFrame). However, within your code, you'll get the sense that the microtasks are "prioritized" over the task queue-based parts.

    • @sadatarefinrafat
      @sadatarefinrafat Місяць тому +4

      Gotta love you for respecting our time.

    • @swaminathbera6407
      @swaminathbera6407 Місяць тому

      From where did you learn?

    • @sourabhjana1278
      @sourabhjana1278 Місяць тому +2

      Can you please extend this more to explain NodeJS runtime 🙏

    • @inowatchvideos
      @inowatchvideos Місяць тому +2

      Those slides are wonderful, it’s still a mystery to me how they are so good. Skills.

    • @joshuafontiveros7877
      @joshuafontiveros7877 Місяць тому

      Thank you for doing this. I love the visuals you made here!

  • @bilalarain4632
    @bilalarain4632 24 дні тому +212

    i think thousands of senior developers finally understood it today.

    • @DasBeatz
      @DasBeatz 18 днів тому

      🤯

    • @scryptum
      @scryptum 15 днів тому +1

      fake senior developers. No theory , not a real dev!

    • @KAIDO-mi1tr
      @KAIDO-mi1tr 15 днів тому +2

      Knowing the todays reality, you wanted to say "junior" developers ? : )

    • @bilalarain4632
      @bilalarain4632 15 днів тому

      @@KAIDO-mi1tr haha

    • @yangliu2713
      @yangliu2713 7 днів тому

      now adays, senior and junior have similar salary, so whats the difference

  • @carltongordon
    @carltongordon Місяць тому +491

    Where has this channel been all my life?

    • @pawanpulami6091
      @pawanpulami6091 Місяць тому +2

      Exactly I was thinking the same 😂

    • @peacemurder3778
      @peacemurder3778 Місяць тому +8

      In the future obviously. 😂

    • @riccardoguitar
      @riccardoguitar Місяць тому +8

      She already done a longer vid for freeCodeCamp 2 years ago and she's on FrontedMasters as Teacher
      ua-cam.com/video/xckH5s3UuX4/v-deo.html

    • @theblackelephant
      @theblackelephant Місяць тому +1

      Same here❤❤❤❤❤

    • @pubudusenarathne
      @pubudusenarathne 28 днів тому

      Exactly!!

  • @ryandawson1220
    @ryandawson1220 Місяць тому +222

    I have been programming for 15 years and I don't think I have seen information presented so succinctly in that span. Thank you so much for this.

  • @florianwicher
    @florianwicher 7 днів тому +10

    This video should receive the Oscar for best animation

  • @timurdinov7452
    @timurdinov7452 7 днів тому +11

    If anyone had a question in the Challenge section as to why console.log(1) didn't execute immediately, even though it was in the Microtask Queue and the Call Stack was empty, read on.
    All the code on the left is a script and can be represented as an anonymous function. At the very beginning of the "Challenge" section in the Call Stack, there should have been an "anonymous" block. This block starts executing (the script is being executed), and then everything is the same as in the video, except that the "anonymous" block is always at the bottom of the Call Stack. The "anonymous" block disappears from the Call Stack after console.log(5) is executed, because it is the last operation in the script.
    And so when the "anonymous" block disappears from the Call Stack, Microtask Queue and Task Queue processing starts (10:04).
    Great video!

    • @joshpike
      @joshpike 4 дні тому

      Thank you. Absolutely wondered this.

  • @jamesallen74
    @jamesallen74 Місяць тому +258

    I've been in software development for 16 years. This video is outstanding. Probably one of the best I've ever seen for JavaScript.
    Lydia, I want to encourage you to keep doing these if you desire. This visual, animated approach combined with your ability to teach is a home run.
    Thank you so much for doing this. I am now subscribed.

    • @draco_2727
      @draco_2727 Місяць тому

      9 years ago was this video... her video seems a rip-off
      ua-cam.com/video/8aGhZQkoFbQ/v-deo.html&ab_channel=JSConf

    • @TheNomadsTimeCapsule
      @TheNomadsTimeCapsule Місяць тому +6

      I can only agree. Especially for this topic, it was hard to find such an amazing explanation. You really helped me out. Thank you,

    • @modolief
      @modolief 25 днів тому +1

      ditto

  • @Ainigma
    @Ainigma 29 днів тому +55

    @Lydia Hallie Are you kidding? This level of detail, every animation, every transition, the highlighting (and temporarily hiding unimportant components) is just so good.
    Very well done, love it.

  • @someshkarmakar47
    @someshkarmakar47 23 хвилини тому

    One of the best video on event loop, till now on youtube, words are not enough to appreciate it... really... thank you...

  • @amulpatel
    @amulpatel Місяць тому +25

    it is very very rare to have material like this presented in such a visual and engaging way .. animation is hardly ever used in js tutorials. Visualization of these concepts is so important for the visual learners out there. THANK YOU.
    instantly subscribed.

  • @ahmedmaaz4390
    @ahmedmaaz4390 21 день тому +4

    Okay ma'am, I noticed you only have 3 videos on your channel. Don't stop until you have at least a 20 video playlist on your channel. This is gold.

  • @ramlaaal
    @ramlaaal Місяць тому +36

    wow the visualization is awesome. The colours, gradients, design and animation. Its perfect down to the tiny details.

  • @oudinia1
    @oudinia1 3 дні тому

    This video is way better than watching my favorite golden buzzer artist for the first time. Off the charts explanation. This video has just made history. Thank you so much. I had gone through a similar tutorial, yet, this one is so easy to follow.

  • @kaipang-whitsett2379
    @kaipang-whitsett2379 Місяць тому +13

    This is the type of visualization that coding vids need

    • @AndrewTSq
      @AndrewTSq Місяць тому

      it reminds me of debuggers we used to have in the late 80ies

  • @huycaoviet8367
    @huycaoviet8367 Місяць тому +62

    I finally understand Event Loop after 1 year writing JS.

    • @ericjeker
      @ericjeker Місяць тому +18

      Don't worry, many devs still don't understand it after 10 years of writing JS.

    • @jonniem
      @jonniem Місяць тому +4

      I thought I did… until today😅

    • @lamhung4899
      @lamhung4899 Місяць тому +2

      No you do not 😂

    • @chess4964
      @chess4964 Місяць тому +1

      huh do you need to understand it? coding js/ts for 3 years now

    • @dbzfan2487
      @dbzfan2487 10 днів тому

      Then you're a shit developer tbh

  • @rogue.ganker
    @rogue.ganker 3 дні тому

    Been doing javascript for over a decade, and this was the coolest explanation I've ever seen!

  • @Kurogane-el2vq
    @Kurogane-el2vq 2 дні тому

    This is so important in JavaScript! Finally someone made a good video topic on this. Made me understood the call stack so clearly.

  • @scaly86
    @scaly86 29 днів тому +5

    The sign of mastery is being able to simply explain a complicated concept. This preso is a thing of beauty... and mastery!

  • @TC14
    @TC14 Місяць тому +22

    Top tier presentation, this is easily one of the best visualizations I've seen on UA-cam. You clearly have excellent teaching and communication skills. I know you are focusing your content on JavaScript but if you were ever interested in giving us an overview of some of your presentation techniques in Apple Keynote, I think many viewers could greatly benefit from it.
    Keep up the awesome content! I can't wait to see what videos you have in store for this channel.

  • @paulobelucci
    @paulobelucci 3 дні тому

    Amazing. I'm a visual learner, and it was a pleasure to watch and learn. Thank you for the content. 👏🏻👏🏻👏🏻

  • @danielwilkowski5899
    @danielwilkowski5899 Місяць тому +2

    I can't believe, there is literally not one incorrect word here. Amazing.

  • @slevinstayshere
    @slevinstayshere Місяць тому +6

    I'm a web programmer for 15+ years now and I'm stunned how well made this explanation is. really Amazing! Subscribed right away!

  • @HamzaKhan-rs2yo
    @HamzaKhan-rs2yo Місяць тому +5

    The visualization is outstanding, providing one of the clearest and most informative explanations I've come across.

  • @flnnx
    @flnnx Місяць тому

    I'm preparing for an interview and this helps a lot. The promises video and this one are simply incredible. Love the series.

  • @SaiPrakash16
    @SaiPrakash16 Місяць тому +2

    By far the most simple yet effective way to show event loop . Really enjoyed it

  • @leepaulison4928
    @leepaulison4928 Місяць тому +4

    Lydia, your teaching style is the best I've seen. Please continue to educate us.

  • @CrusaderMen
    @CrusaderMen Місяць тому +22

    Thank you.
    This is the best explanation I've seen.

  • @vapon
    @vapon 4 дні тому

    Just jamming here... being C++ developer for 30 years, reading all these comments about seniors and juniors...I wonder: Guys have you ever read a text book about your profession?
    Nice video btw!

  • @paulopontovaz
    @paulopontovaz 21 день тому +1

    Whoa, I'm so happy that this channel exists. The visuals help SO MUCH with understanding all the JS flow!

  • @jackwright517
    @jackwright517 Місяць тому +3

    Whoaaaa... Ive been writing js for years and this is hands down the BEST event loop video resource ive ever seen. My god its presented so simply! 💯

  • @forkanshanto2228
    @forkanshanto2228 Місяць тому +3

    This video brilliantly illustrates the intricate workings of JavaScript's Event Loop, Web APIs, and (Micro)task Queue. The visuals make complex concepts crystal clear, making it easier to grasp how JavaScript manages asynchronous tasks behind the scenes. Kudos to the creators.

  • @DesignsbyBlanc
    @DesignsbyBlanc Місяць тому

    Never thought I grab some popcorn🍿 to learn about the inner workings of JavaScript, yet here I am. Awesome work!

  • @MagnumCarta
    @MagnumCarta Місяць тому +8

    10 / 10 quality. The explanation of the different queues helped clear up confusion I had in the background of how asynchronous tasks work underneath the hood in the context of Javascript. Even with a bachelor's degree in computer science it was still a pretty head scratching concept thinking "how does the engine know what is I/O blocking and what is not? How does it handle that?". I would always hear "oh its just on the event loop! Its just on the event loop!" but I'd be like "all these diagrams suggest the blocking and non-blocking are on the same queue". I had no idea about the microtask queue and that is where fetch's then calls are appended to.
    Also I can't help but look at the word "event loop" and just think of Froot Loops.

  • @Isaac-hd6vs
    @Isaac-hd6vs Місяць тому +3

    Hands down, the best event loop explanation ever!

  • @rjwhite4424
    @rjwhite4424 10 днів тому +1

    this single video has taught me more about js under the hood then months of watching other videos

  • @viatrixhd
    @viatrixhd Місяць тому

    I have been programming for some years now, as a visual learner this video was awesome. Perfectly visualized and straight to the point! Keep up the great work

  • @mattpocockuk
    @mattpocockuk Місяць тому +12

    Fucking hell Lydia, this is incredible

  • @gabriellinassi3382
    @gabriellinassi3382 Місяць тому

    Thank you, Lydia. You explain very well. After 3 years writing JS, I'm finally taking the time to go back to the basics and learn the fundamentals and I'm learning a lot

  • @junior.santana
    @junior.santana 3 дні тому

    I didn't know this was possible but this video is JavaScript meets Absolute Cinema

  • @PostMeridianLyf
    @PostMeridianLyf Місяць тому +11

    Are you Ai? This seems too perfect

    • @The_Wookiee
      @The_Wookiee Місяць тому +1

      *too (This has been your ai powered nostalgia post troll, have a nice day.)

  • @abdulrahmantahir3033
    @abdulrahmantahir3033 Місяць тому +8

    Mam can you make a video on how exactly the react works under the hood ?

  • @TheDogn
    @TheDogn Місяць тому

    I've never seen this information provided with such uncompromising clarity. Subbed. This is the first video I've seen of yours, but if the rest are anything like this one, you're worth it. Amazing.

  • @aGoodOmen
    @aGoodOmen Місяць тому

    I am in awe of the explanation and the masterful use of Keynote. Great stuff. Congrats!

  • @arthurvmdantas
    @arthurvmdantas 10 днів тому

    This presentation is crazy good. I can only imagine the amount of work put into it. Congratulations.

  • @user-so4kv5oo5d
    @user-so4kv5oo5d Місяць тому

    Lydia, I want to encourage you to keep doing these if you desire. This visual, animated approach combined with your ability to teach is a home run.

  • @_nsikak
    @_nsikak 4 дні тому

    You made it easy for me to understand the sequence of execution between the microtask queue and task queue. Thank you!

  • @basilenordmann7356
    @basilenordmann7356 5 днів тому

    Okay it doesn’t look like me to just stupidly show appreciation, but this video is straight up great

  • @erick2051
    @erick2051 15 днів тому

    Lydia, your explanation is by far the clearest i've seen out there. I'd love to watch something similar for async-await!

  • @ylaguardia
    @ylaguardia Місяць тому

    Congrats on this video. I've read a lot about this topic... articles, tweets, book passages. I've seen videos and talks about this. None of them were so thorough, clear and enlightening as this one. Keep up with the outstanding work!

  • @JoysterRodrigues7
    @JoysterRodrigues7 Місяць тому

    The presentation quality is top-notch! This is probably the best JS "under-the-hood" explainer out there

  • @vikramtatke5930
    @vikramtatke5930 Місяць тому

    This is absolute gold! So glad UA-cam recommended this video. Lydia, it is amazing to see the effort you've put into creating these slides.
    I subscribed in the first 60 seconds. This is how the universities should have taught us! Kudos! Looking forward to your next one!

  • @tylerwalton7659
    @tylerwalton7659 8 днів тому

    This was absolutely amazing!! The way you broke down callbacks from methods, visuals to see what’s happening. Best of all a challenge to really help drive the subject home, best way to improve learning. I can’t wait for more to come from you and THANK YOU!

  • @EbrahimTahernejad
    @EbrahimTahernejad Місяць тому

    I already knew all these but still watched it because of the quality of your presentation.
    Great work.
    Keep doing what you're doing.

  • @meetfilipe_
    @meetfilipe_ Місяць тому

    I can't imagine the amount of work you put in to explain something so complex put so simply

  • @DontFollowZim
    @DontFollowZim 20 днів тому

    I've already learned all this, but this is the probably the clearest, best, and most beautiful explanation I've seen. I need to share this...

  • @ilonakhomenko3797
    @ilonakhomenko3797 Місяць тому

    This video is absolutely amazing! Very clear and straight to the point. I often struggle with understanding JS, and I found this video incredibly helpful. Thanks, Lydia! Looking forward for your new videos 👍

  • @geoffreymoluba7448
    @geoffreymoluba7448 Місяць тому +1

    It's so well explained that after 1minutes 27 seconds of watching I had to subscribe. This is pure quality content

  • @mvkotekar
    @mvkotekar Місяць тому

    Where was this channel all this time. Great visualization. Thanks for all the handwork to put across all the details together.

  • @hoangduy500
    @hoangduy500 Місяць тому

    This channel is a precious gem! Thank you, Lydia. I know it takes a lot of effort, but I hope you could make more videos with excellent visual explanations like this.

  • @sebas_xs
    @sebas_xs Місяць тому +1

    Your explanations are crystal clear and your slides are absolutely stunning! You have a real talent for breaking down complex topics in such an engaging way. Keep up the fantastic work, you're making learning an absolute pleasure!

  • @souravmitra6370
    @souravmitra6370 День тому

    Best possible explanation out there for understanding event loop concept in JS. Thanks for the video.

  • @teleprint-me
    @teleprint-me Місяць тому

    This video showcases a true understanding of the web api and the javascript event system resulting in a extremely high quality presentation.

  • @suenkaiching1580
    @suenkaiching1580 Місяць тому

    Thank you! This is absolutely the best explanation I have ever seen. 12 mins of video cleared out all the my confusions I had in event loop from day 1!!

  • @ashuvssut
    @ashuvssut 29 днів тому

    No BS just pure content! True GEM!!
    Subscribed right away at 4:22
    These small concepts took me a long time to grasp while working with JS over the years

  • @marianopainefil3537
    @marianopainefil3537 Місяць тому

    Este video es INCREIBLE. Completamente deberia ser un MUST en cualquier capacitación/universidad. Millones de gracias!

  • @cusematt23
    @cusematt23 Місяць тому

    I've seen 2-3 of Lydia's videos over the years (not sure if they are all of this channel) and they really are just phenomenally well-organized and delivered. I always learn a ton even though I have sadly watched a large proportion of JavaScript UA-cam and one might think I have seen everything. Well done Lydia! Hope to see more in the future.

  • @ShredNekM80
    @ShredNekM80 Місяць тому

    The presentation and clarity of this information is excellent! Thank you for making this video. It made understanding the Event Loop so much easier!

  • @t.k.raphaelngan6002
    @t.k.raphaelngan6002 Місяць тому +1

    Glad to be more clear about async stuff. Before just confused with the sequence and did not know why. Not even heard terms of promise based and callback based and their respectively being thrown to microtask queue and general task queue.
    Thanks 👏

  • @glyakk
    @glyakk 10 днів тому

    It is insane how much information you you were able to convey in one short video, I knew async tasks were pushed off to be filled later but I had no mental model how that worked until now.

  • @IceBreakerGamer
    @IceBreakerGamer 13 днів тому

    This channel is a gold mine... literally.. please post more.

  • @mohitkarki7185
    @mohitkarki7185 20 днів тому

    I think this is the best event loop explanation in the internet. You have described each and every point in such detailed way, making this topic feel so simple to understand. The animation is also made with such detail, making life easier.

  • @Fernando-du5uj
    @Fernando-du5uj Місяць тому

    Love all those illustrations. It really helps to understand the concepts. Thank you for everything you've done. Keep going! 👍

  • @4733R70
    @4733R70 Місяць тому

    wow! the animations are crazy and helped me so much to understand what's going on behind the scenes! you also have a beautiful voice, it's so soothing!

  • @SanketBhat7
    @SanketBhat7 Місяць тому

    So far the best explanation of how Java script works. Thanks

  • @lmarts
    @lmarts Місяць тому

    Wow! I'm surprised at how well the JavaScript asynchronous lifecycle is explained in this video. The best of its kind bar none.

  • @RemigiuszDudek
    @RemigiuszDudek 24 дні тому

    beautiful and simple, Lydia great work. Thank you!

  • @noozytechz
    @noozytechz 24 дні тому

    What you've done is mind-blowing, ma'am.

  • @itsjmendez
    @itsjmendez 8 днів тому

    Well done! the best way to understand these concepts is with a visual explanation. Keep it up! 🔥

  • @nelsonelijah5327
    @nelsonelijah5327 23 дні тому

    This is phenomenal. I just started learning javascript coming from an Embedded systems background and never understood how the execution of commands happened. This cleared a year of misconceptions for me and unprecedented years of troubles. Wow! Some people are just goated!

  • @nemethricsi
    @nemethricsi Місяць тому

    Lydia, this is the best explanation I’ve ever heard about this topic ❤ thank you!

  • @warta312
    @warta312 18 днів тому

    Hope you keep doing this great job. This is one of the best explanations I've seen in the last few months.

  • @marcinkossowski6579
    @marcinkossowski6579 29 днів тому

    this channel and fireship, kevin powell and web dev simplified is all a dev needs these days. Amazing job, keep it coming!

  • @MrFamboYT
    @MrFamboYT Місяць тому

    Super sold on the animations and slides. Ton's of work and dedication can be seen. Super awesome.

  • @MM-ts9jy
    @MM-ts9jy 23 дні тому

    I must say, this is the best visual representation of JS I've seen so far

  • @miguelbautista3628
    @miguelbautista3628 Місяць тому

    The slides really made it click, keep sticking to that way of teaching, that was great

  • @haraseesgill8491
    @haraseesgill8491 26 днів тому

    This is a really great resource for learning the importance of the event loop.
    This is the perfect medium between deep technical understanding and practical application of the event loop and Javascript as a whole.
    Even though I knew all of this, I found it refreshing relearning with the way you organized information, and I even forgot about the Microservice queue so that cleared up some of my async JavaScript understanding.
    This was an awesome watch! Looking forward to your future explanations/animations. Please keep it up 😁

  • @ssygon2
    @ssygon2 Місяць тому

    Nice visual explanation of the types of stack n queues used for each call and the event loop lifecycle.

  • @GUYX10
    @GUYX10 23 дні тому +1

    One of the best explainer videos I've ever seen, thank you! Subbed

  • @fadichamieh
    @fadichamieh 25 днів тому

    Simply Great illustration of a seemingly simple yet inherently complex topic: JavaScript tasks and async / promise execution

  • @tomjerry0796
    @tomjerry0796 5 днів тому +1

    12 min just recalled my last 2 years ❤🎉

  • @TheZenJin
    @TheZenJin Місяць тому

    Just wow! This is pants down the best Tutorial-Style-Vid I have ever seen. Please keep it up, I love it!

  • @vasudevkoneru
    @vasudevkoneru Місяць тому

    A brilliant explainer. Just what I was looking for coming from a Java ecosystem. Visuals are stunning. Thank you ma'am!

  • @shokhbozabdullayev6260
    @shokhbozabdullayev6260 28 днів тому

    This was so well structured visualization and I was able to find the answer for the quiz correctly and I have become sure that the confusion around Event Loop/Callback/(Micro)TaskQueue do not bother me anymore. Thanks @theavocoder )

  • @snoopy8870
    @snoopy8870 Місяць тому

    Thank you for detailed , visualised explanation Lydia!!!

  • @zlatanonkovic2424
    @zlatanonkovic2424 Місяць тому

    Extremely well structured! The quiz in the end was a great idea

  • @onlysparsh
    @onlysparsh 9 днів тому

    Got it right ! Once you understand the basics this is the best video ever to understand how the event loop and overall js engine execution work ! Thanks lydia

  • @theseus_dev
    @theseus_dev Місяць тому

    Absolutely loved your course on Frontend Masters! Super excited about your new UA-cam channel and can't wait for your upcoming videos. By the way, hands down, your lectures and the way you explained this topic is the best I've seen.

  • @abcdabcd8605
    @abcdabcd8605 Місяць тому

    Amazing explanation on Event Loop. 100% would recommend to anyone who wants to learn about Event Loop.

  • @hellcat8886
    @hellcat8886 27 днів тому +2

    Pls, don't stop making videos like this, it's really enlightening!❤

  • @eestidev
    @eestidev Місяць тому

    only 2 videos, and you are still killing it. Amazing content!