Your 2nd JavaScript Course: Advanced Concepts and Algorithms

Your 2nd JavaScript Course: Advanced Concepts and Algorithms

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 199 lectures (9h 55m) | 3.46 GB

Advanced Topics: ES6, Promise, Async Await, Arrow Function, Prototype Chain, Data Structure, Sorting Algorithms

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

If you want to take the leap from a junior JavaScript developer to a senior one, then you have found the right course.

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 methods 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.

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. These knowledge can help you create more efficient programs and succeed in job interviews.

If you need to learn JS frameworks like Vue, React, 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.

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
Table of Contents

Fill up knowledge loopholes var, let, const, hoisting, temporal dead zone
1 Everything you need to know about VAR
2 Everything you need to know about LET
3 Constant
4 TDZ Temporal Dead Zone
5 Real-life application of LET

Fill up knowledge loopholes function hoisting, arguments, caller, callee, THIS
6 Who has the highest priority Variable name, function name or argument name
7 Arguments, caller, callee
8 Three ways to redirecting THIS of a funciton
9 Higher-order function and currying
10 Currying and closure

Closure and arrow function
11 Closure
12 Real-life application of Closure
13 Syntax of arrow function
14 THIS in an arrow function
15 Application of arrow function

Destructure the ‘fancy’ way of setting variable values
16 Destructure array
17 Destructure object
18 Destructure string
19 Destructure number, boolean, null and undefined
20 Destructure function arguments

ES6 new syntax Map and Set
21 Map basics
22 Iterate over MAP using FOR OF
23 SET basics
24 Application of SET

ES6 new syntax Symbol
25 Introduction to Symbol
26 How to create a Symbol value
27 Symbol.for()
28 Use Symbol value as the property name
29 Well-known Symbol

ES6 new syntax Iterator and generator
30 The iteration protocol the iterable protocol and the iterator protocol
31 Create your own iterator
32 Generator
33 Application of generator
34 The next() method
35 yield

ES6 new syntax Promise
36 Introduction to Promise
37 The Promise constructor
38 The application of Promise
39 The then able object
40 Promise.resolve() and Promise.reject()
41 Limits of Promise.resolve() and Promise.reject()
42 Process several promises together .all(), .allSettled() and .race()

ES6 new syntax async await
43 async await
44 async await supplement

ES6 new syntax Reflect and Proxy
45 Reflect and its methods
46 What is Proxy
47 Create private properties using the GET trap
48 The SET trap
49 The has and deleteProperty trap
50 Use a proxy object as the prototype
51 The defineProperty trap
52 The apply trap
53 The constructor trap
54 Revocable proxy
55 Real-life Application

JSON
56 JSON

CommonJS
57 Introduction to CommonJS
58 The mechanism of CommonJS the module object
59 Circular dependency
60 How CommonJS handles cache require.cache

ES6 Module import export
61 ES6 import and export
62 How to ‘import’
63 Named export
64 Default export
65 The difference between named export and dynamic export dynamic reference
66 Use ESM in browser

The strict mode
67 How to enable the strict mode
68 Changes brought by the strict mode

The Object prototype chain and the prototypal inheritance
69 proto
70 The prototype property of a constructor
71 How our own constructor uses the prototype chain
72 Real-life application of prototype chain

The Object Constructor and its methods
73 Introduction to the Object constructor
74 Object.values(), Object.keys(), Object.entries(), Object.is()
75 Object.setPrototypeOf() and Object.assign()
76 Object.create() Part 1
77 Object.create() Part 2
78 Property attributes
79 The descriptor object
80 Create properties with customized attributes
81 Object.preventExtensions()
82 Object.seal()
83 Object.freeze()

Accessor and its application two-way data binding
84 Getter and Setter introduction
85 Create accessors using Object.defineProperty()
86 Two-way data binding using getter and setter

Constructor
87 How to define your own constructor function
88 Prototype and static properties and methods
89 Review, comparison and summary
90 Private properties in constructors
91 How to define getter and setter in a constructor

Class
92 Class introduction
93 How to define properties
94 How to define methods instance, prototype and static
95 Fields
96 Private properties in classes

Extending classes
97 Extend properties
98 Extend methods
99 Application extending the Array() constructor
100 static get [Symbol.species]
101 new.target control the instantiation location
102 Make the parent class ‘un-newable’
103 Mixin

Stack, queue, heap, process, thread, recursion, macro and micro task
104 Data structure Queue, Stack, and Heap
105 Thread and Process, sync and async, blocking and non-blocking
106 Recursion and stack overflow
107 Macro tasks, micro tasks, and their queues

Event loop and task queue
108 Event loop, micro task queue, macro task queue
109 Interview challenges predict the result of the following programs
110 process.nextTick()

Tail call optimization one frame in stack at a time
111 What is tail call optimization
112 Real-life application of tail call optimization

Encapsulation, inheritance, and polymorphism
113 Encapsulation, inheritance, polymorphism
114 Differences between a primitive prop. value and a reference-type prop. value
115 Douglas Crawford’s program recreate Object.create()
116 The creative combination of a constructor and the call or apply method
117 The genius combination of two constructors
118 Parasitic inheritance

Deep and shallow object copy
119 instanceof and typeof
120 ‘Shallow copy an object
121 Deep copy an object
122 Deep assign an object into another one

Garbage collection and circular dependency
123 JavaScript garbage collection and memory leak
124 Circular reference, reference counting and mark and sweep

Basic computing knowledge
125 Bit, byte, word, memory address and byte addressing
126 Basic encoding knowledge
127 Memory address and byte addressing
128 Bit width

Array and string related interview questions
129 Array basics
130 How does an array affect THIS in a function or method
131 Concatenate two arrays, operating the first and last element
132 Remove duplicated elements using two methods
133 Check the entire array and find the matching element
134 How to remove and replace designated elements and retrieve an array segment
135 How to find the max and min element and how to reorganize array elements
136 Array with holes
137 The Array constructor
138 String basics
139 Calculating word count using the split() method
140 Extract a section of a string
141 Replace a section of a string
142 Highlight selected texts

Data type related interview questions
143 Data types in JavaScript
144 Type coercion, wrapper object, explicit and implicit typecasting
145 Compare NULL, undefined, and NaN

Check data type
146 The problems with typeof and instanceof
147 Create a data type checker by combining typeof and instanceof
148 Checking data type using the constructor property
149 Checking data type using the toString method and the call or apply method

Scope-related interview questions
150 Scope chain and closure
151 Lexical scoping vs. dynamic scoping

Bubble sorting algorithm (SUPER DETAILED)
152 Switching two variable values without creating a new variable
153 Count how many times each character of a string has been used
154 Find the most and least frequently used character
155 Count words
156 Find the most and least frequently words
157 Bubble sorting introduction
158 Bubble sorting application
159 Bubble sort backwards
160 Reorganize array elements in ascending and descending order using bubble sorting
161 Improve the bubble sorting program by ending the loop at the earliest timing
162 The problem with the inner FOR loop
163 Avoid unnecessary comparisons using rightSortBorder
164 LeftSortBorder avoiding unnecessary comparisons while iterating backwards

Cocktail sorting
165 Cocktail sorting
166 Add the left and right sort border to avoid unnecessary comparisons

Quick sorting
167 Quick sorting introduction
168 Quick sorting demo

Counting sorting
169 Counting sorting introduction
170 Deal with duplicated elements
171 Improve efficiency Part 1
172 Improve efficiency Part 2

Insertion sorting
173 Insertion sorting introduction
174 Insertion sort demo

Bucket sorting
175 Bucket sorting introduction
176 Bucket sorting demo

Selection sorting
177 Selection sort introduction
178 Selection sort demo

Time and space complexity big O notation
179 Time and space complexity big O notation

Data structure with JavaScript
180 Linear structures and how they are stored in memory
181 Non-linear data structure

Binary heap and its application heap sorting
182 How to realize binary heap in JavaScript
183 Realize the binary heap structure using JavaScript codes
184 The heap sorting algorithm intro
185 The heap sorting algorithm demo

The Observer Pattern
186 Introduction to the Observer pattern
187 Managing several page elements using the Observer pattern
188 Two-way data binding using the Observer pattern

Things you don’t know about the FOR loop
189 The two shocking forms of FOR loop
190 Challenge iterating over the array backwards

Quick review & refresher
191 Differences between VAR and LET
192 Closure
193 Arrow function syntax and where its THIS points to
194 Destructuring Assignment
195 Queue, stack, and heap
196 Thread and process, sync and async
197 Stack overflow
198 Event loop, macro task and micro task and their queues
199 NodeJS process.nextTick()

Homepage