Your 2nd JavaScript Course: Advanced Concepts and Algorithms

Your 2nd JavaScript Course: Advanced Concepts and Algorithms

English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 9.5 Hours | 3.39 GB

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.

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

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

JSON
55 JSON

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Quick sorting
166 Quick sorting introduction
167 Quick sorting demo

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

Insertion sorting
172 Insertion sorting introduction
173 Insertion sort demo

Bucket sorting
174 Bucket sorting introduction
175 Bucket sorting demo

Selection sorting
176 Selection sort introduction
177 Selection sort demo

Time and space complexity big O notation
178 Time and space complexity big O notation

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

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

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

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

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