Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Your Second JavaScript Course
Rating: 4.5 out of 5(131 ratings)
1,166 students

Your Second JavaScript Course

Advanced Topics: ES6, Promise, Async Await, Arrow Function, Prototype Chain, Data Structure, Sorting Algorithms
Created byOnlyKiosk Tech
Last updated 5/2025
English

What you'll learn

  • Understand how JavaScript works: queue, stack, heap, stack overflow, event loop, task queue, etc.
  • Master ES6 new syntaxes: let, map, set, Symbol, iterator, generator, reflect, promise, proxy, etc.
  • Destructuring assignment
  • Completely understand the JavaScript inheritance and the prototype chain
  • ES6 Module and CommonJS
  • Constructors and classes
  • Real-life creative ways of designing constructors and inheritance programs
  • The strict mode
  • Tail call optimization
  • Recursion
  • Deep and shallow object copy
  • Two-way data binding
  • Data structure
  • Sorting algorithms

Course content

44 sections199 lectures9h 55m total length
  • Everything you need to know about VAR4:31

    In this lesson, we will take a close look at the JavaScript variables. You will be surprised how little you know about it.

    There are two ways we can create a variable in JS: var and let. We will start with var.

  • Everything you need to know about LET1:57

    In this lesson, we will take a close look at let and find out all the differences between it and var.

  • Constant1:02

    In this lesson, we will show you how to use constant. Just like let, constant is also a new feature introduced by ES6. It also has the same characteristics as let.

    Unlike variables, constant value cannot be changed. This is why it is called constant.

  • TDZ: Temporal Dead Zone1:18

    LET will create a TDZ, in this lesson, you will learn everything about TDZ.

  • Real-life application of LET3:18

    In this lesson, we will take a look at the real-life application of let.

Requirements

  • Basic JavaScript development experience

Description

This is the course that scratches the itch!

This is a JavaScript enhancement course, designed to help junior JavaScript developers gain a wider and deeper understanding of JavaScript.

What you will learn: 

You will learn ES6 new features like destructuring assignment, async/await, reflect, proxy, symbol, iterator, generator, etc.

Then you will learn the JavaScript object system and prototypal inheritance in the most detailed way. You will learn every method the Object constructor has.

To completely understand how JavaScript works, you will learn advanced topics like thread, process, stack, queue, heap, task queue, event loop, recursion, deep and shallow object copy, etc.

To further boost your coding skills, you will also learn 8 sorting algorithms: bubble sorting, cocktail sorting, quick sorting, counting sorting, insertion sorting, bucket sorting, selection sorting, and heap sorting.

You will also develop a proper understanding of linear and non-linear data structures, including array, linked list, binary search tree, max heap, min heap, etc.

What you will achieve:

After this course, you will develop a solid JavaScript knowledge base and most importantly, gain a deep understanding of how JavaScript works under the hood. This knowledge can help you create more efficient programs and succeed in job interviews.

If you need to learn JS frameworks like Vue, React, and Angular, a solid knowledge foundation in JavaScript can tremendously accelerate your study.

Throughout the course, you will also learn how to answer questions that are frequently seen in job interviews.

Content highlights:

  1. Lecture 1, 2: Everything you need to know about var and let [FREE Preview]

  2. Lecture 6: Priority comparison: variable name, function name, and argument name

  3. Lecture 9, 10: Higher-order function and currying

  4. Lecture 11, 12: Closure and its real-life application [FREE Preview]

  5. Lecture 68, 69, 70, 71: The JavaScript prototype chain

  6. Lecture 85: two-way data binding

  7. Lecture 103: Data structure: Queue, Stack, and Heap  [FREE Preview]

  8. Lecture 104: Thread and Process, sync and async, blocking and non-blocking

  9. Lecture 105: Recursion and stack overflow

  10. Lecture 107: Event loop

  11. Lecture 108: Interview challenges: predict the result of the following programs using event loop, macro and micro task queue

  12. Lecture 110, 111: tail call optimization

  13. Lecture 114, 115, 116, 117: creative inheritance program design

  14. Lecture 120, 121: 'Deep' copy and assign objects

  15. Lecture 122, 123: JavaScript garbage collection, reference count, and the mark-and-sweep algorithm

  16. Lecture 124, 125, 126, 127: Basic computing knowledge: bit, byte, memory address, byte addressing, bit width, encoding

  17. Lecture 142, 153, 144: Type coercion, wrapper object, explicit and implicit typecasting

  18. Lecture 151-163: Bubble sorting

  19. Lecture 164, 165: Cocktail sorting

  20. Lecture 166, 167: Quick sorting

  21. Lecture 168, 169, 170, 171: Counting sorting

  22. Lecture 172, 173: Insertion sorting

  23. Lecture 174. 175: Bucket sorting

  24. Lecture 176, 177: Selection sorting

  25. Lecture 178: Time and space complexity and the big O notation

  26. Lecture 179, 180: Linear and non-linear data structures: array, linked list, binary search tree, max heap, min heap, etc.

  27. Lecture 181, 182, 183, 184: binary heap and heap sorting

  28. Lecture 185, 186, 187: the Observer pattern and two-way data binding using the Observer pattern

Please Note: This is NOT a beginner course and does not cover JS DOM and jQuery.

Who this course is for:

  • Students who want to take their JavaScript skill to the next level
  • Students who need to enhance their JavaScript knowledge foundation
  • Students who need to master advanced and confusing JavaScript topics like prototype chain, event loop, closure, etc.
  • Developers who need to know more about the running mechanism of JavaScript
  • Developers who need to improve the efficiency and quality of their codes