Course Contents
-
Section 1: Welcome, Welcome, Welcome!
-
1 Course Structure and Projects05:25
-
2 Watch Before You Start!06:09
-
3 Setting Up Our Code Editor08:23
-
-
Section 2: JavaScript Fundamentals – Part 1
-
4 Section Intro00:53
-
5 Hello World!05:57
-
6 A Brief Introduction to JavaScript11:18
-
7 Linking a JavaScript File15:55
-
8 Values and Variables16:05
-
9 Data Types19:19
-
10 let, const and var09:58
-
11 Basic Operators19:31
-
12 Operator Precedence11:19
-
13 CHALLENGE #1: Video Solution07:20
-
14 Strings and Template Literals10:57
-
15 Taking Decisions: if / else Statements12:50
-
16 CHALLENGE #2: Video Solution05:20
-
17 Type Conversion and Coercion16:40
-
18 Truthy and Falsy Values10:03
-
19 Equality Operators: == vs. ===15:41
-
20 Boolean Logic08:30
-
21 Logical Operators10:37
-
22 CHALLENGE #3: Video Solution11:42
-
23 The switch Statement13:10
-
24 Statements and Expressions06:08
-
25 The Conditional (Ternary) Operator10:02
-
26 CHALLENGE #4: Video Solution05:57
-
27 JavaScript Releases: ES5, ES6+ and ESNext14:19
-
-
Section 3: JavaScript Fundamentals – Part 2
-
28 Section Intro00:36
-
29 Activating Strict Mode10:27
-
30 Functions19:08
-
31 Function Declarations vs. Expressions10:39
-
32 Arrow Functions09:52
-
33 Functions Calling Other Functions10:07
-
34 Reviewing Functions15:37
-
35 CHALLENGE #1: Video Solution14:10
-
36 Introduction to Arrays21:34
-
37 Basic Array Operations (Methods)12:52
-
38 CHALLENGE #2: Video Solution06:54
-
39 Introduction to Objects06:08
-
40 Dot vs. Bracket Notation19:21
-
41 Object Methods23:04
-
42 CHALLENGE #3: Video Solution09:50
-
43 Iteration: The for Loop11:11
-
44 Looping Arrays, Breaking and Continuing22:02
-
45 Looping Backwards and Loops in Loops11:53
-
46 The while Loop11:52
-
47 CHALLENGE #4: Video Solution11:24
-
-
Section 4: How to Navigate This Course
-
48 Pathways and Section Roadmaps04:08
-
-
Section 5: Developer Skills & Editor Setup
-
49 Section Intro00:39
-
50 Setting up Prettier and VS Code16:22
-
51 Installing Node.js and Setting Up a Dev Environment11:32
-
52 Learning How to Code17:42
-
53 How to Think Like a Developer: Become a Problem Solver!10:53
-
54 Using Google, StackOverflow and MDN26:36
-
55 Debugging (Fixing Errors)05:09
-
56 Debugging with the Console and Breakpoints19:25
-
57 CHALLENGE #115:24
-
-
Section 6: [OPTIONAL] HTML & CSS Crash Course
-
58 Section Intro00:40
-
59 Basic HTML Structure and Elements09:32
-
60 Attributes, Classes and IDs13:09
-
61 Basic Styling with CSS12:00
-
62 Introduction to the CSS Box Model20:57
-
-
Section 7: JavaScript in the Browser: DOM and Events [PROJECT]
-
63 Section Intro00:49
-
64 PROJECT #1: Guess My Number!08:47
-
65 What's the DOM and DOM Manipulation06:48
-
66 Selecting and Manipulating Elements08:22
-
67 Handling Click Events12:50
-
68 Implementing the Game Logic19:33
-
69 Manipulating CSS Styles08:17
-
70 CHALLENGE #111:40
-
71 Implementing Highscores07:47
-
72 Refactoring Our Code: The DRY Principle15:05
-
73 PROJECT #2: Modal Window13:21
-
74 Working With Classes16:55
-
75 Handling an "Esc" Keypress Event14:11
-
76 PROJECT #3: Pig Game17:08
-
77 Rolling the Dice15:58
-
78 Switching the Active Player15:16
-
79 Holding Current Score24:55
-
80 Resetting the Game15:38
-
-
Section 8: How JavaScript Works Behind the Scenes
-
81 Section Intro01:31
-
82 An High-Level Overview of JavaScript12:11
-
83 The JavaScript Engine and Runtime13:47
-
84 Execution Contexts and The Call Stack17:45
-
85 Scope and The Scope Chain25:37
-
86 Scoping in Practice21:13
-
87 Variable Environment: Hoisting and The TDZ11:00
-
88 Hoisting and TDZ in Practice14:42
-
89 The this Keyword06:30
-
90 The this Keyword in Practice13:11
-
91 Regular Functions vs. Arrow Functions18:04
-
92 Primitives vs. Objects (Primitive vs. Reference Types)16:06
-
93 Primitives vs. Objects in Practice14:57
-
-
Section 9: Data Structures, Modern Operators and Strings
-
94 Section Intro00:53
-
95 Destructuring Arrays19:33
-
96 Destructuring Objects19:46
-
97 The Spread Operator (...)21:26
-
98 Rest Pattern and Parameters19:01
-
99 Short Circuiting (&& and ||)15:55
-
100 The Nullish Coalescing Operator (??)03:32
-
101 Logical Assignment Operators11:39
-
102 CHALLENGE #114:57
-
103 Looping Arrays: The for-of Loop07:20
-
104 Enhanced Object Literals07:02
-
105 Optional Chaining (?.)16:10
-
106 Looping Objects: Object Keys, Values, and Entries10:09
-
107 CHALLENGE #214:30
-
108 Sets13:18
-
109 Maps: Fundamentals14:03
-
110 Maps: Iteration12:41
-
111 Summary: Which Data Structure to Use?09:40
-
112 CHALLENGE #309:37
-
113 Working With Strings - Part 116:53
-
114 Working With Strings - Part 221:45
-
115 Working With Strings - Part 321:41
-
116 CHALLENGE #415:15
-
117 String Methods Practice16:36
-
-
Section 10: A Closer Look at Functions
-
118 Section Intro00:48
-
119 Default Parameters09:17
-
120 How Passing Arguments Works: Value vs. Reference13:36
-
121 First-Class and Higher-Order Functions05:24
-
122 Functions Accepting Callback Functions15:20
-
123 Functions Returning Functions06:36
-
124 The call and apply Methods16:51
-
125 The bind Method21:33
-
126 CHALLENGE #118:47
-
127 Immediately Invoked Function Expressions (IIFE)07:52
-
128 Closures19:48
-
129 More Closure Examples15:30
-
130 CHALLENGE #205:25
-
-
Section 11: Working With Arrays [PROJECT]
-
131 Section Intro00:53
-
132 Simple Array Methods16:37
-
133 The New at Method06:04
-
134 Looping Arrays: forEach13:46
-
135 forEach With Maps and Sets05:32
-
136 PROJECT: "Bankist" App09:48
-
137 Creating DOM Elements18:44
-
138 CHALLENGE #108:31
-
139 Data Transformations: map, filter, reduce04:40
-
140 The map Method15:40
-
141 Computing Usernames12:14
-
142 The filter Method06:19
-
143 The reduce Method20:57
-
144 CHALLENGE #209:56
-
145 The Magic of Chaining Methods19:39
-
146 CHALLENGE #303:57
-
147 The find Method06:47
-
148 Implementing Login24:18
-
149 Implementing Transfers20:54
-
150 The findIndex Method12:34
-
151 some and every15:11
-
152 flat and flatMap09:32
-
153 Sorting Arrays21:55
-
154 More Ways of Creating and Filling Arrays20:33
-
155 Summary: Which Array Method to Use?06:24
-
156 Array Methods Practice32:21
-
157 CHALLENGE #423:47
-
-
Section 12: Numbers, Dates, Intl and Timers [PROJECT]
-
158 Section Intro00:50
-
159 Converting and Checking Numbers16:46
-
160 Math and Rounding18:14
-
161 The Remainder Operator10:56
-
162 Numeric Separators06:57
-
163 Working with BigInt11:18
-
164 Creating Dates12:55
-
165 Adding Dates to "Bankist" App22:21
-
166 Operations With Dates15:27
-
167 Internationalizing Dates (Intl)17:18
-
168 Internationalizing Numbers (Intl)19:06
-
169 Timers: setTimeout and setInterval13:53
-
170 Implementing a Countdown Timer28:31
-
-
Section 13: Advanced DOM and Events [PROJECT]
-
171 Section Intro01:04
-
172 PROJECT: "Bankist" Website08:49
-
173 How the DOM Really Works10:36
-
174 Selecting, Creating, and Deleting Elements20:28
-
175 Styles, Attributes and Classes21:54
-
176 Implementing Smooth Scrolling15:56
-
177 Types of Events and Event Handlers10:33
-
178 Event Propagation: Bubbling and Capturing05:03
-
179 Event Propagation in Practice17:46
-
180 Event Delegation: Implementing Page Navigation18:48
-
181 DOM Traversing14:35
-
182 Building a Tabbed Component24:08
-
183 Passing Arguments to Event Handlers18:43
-
184 Implementing a Sticky Navigation: The Scroll Event07:55
-
185 A Better Way: The Intersection Observer API24:00
-
186 Revealing Elements on Scroll12:39
-
187 Lazy Loading Images18:30
-
188 Building a Slider Component: Part 123:16
-
189 Building a Slider Component: Part 219:35
-
190 Lifecycle DOM Events09:26
-
191 Efficient Script Loading: defer and async13:30
-
-
Section 14: Object-Oriented Programming (OOP) With JavaScript
-
192 Section Intro01:06
-
193 What is Object-Oriented Programming?20:55
-
194 OOP in JavaScript10:08
-
195 Constructor Functions and the new Operator14:19
-
196 Prototypes14:36
-
197 Prototypal Inheritance and The Prototype Chain10:58
-
198 Prototypal Inheritance on Built-In Objects14:46
-
199 CHALLENGE #107:27
-
200 ES6 Classes12:57
-
201 Setters and Getters13:15
-
202 Static Methods06:24
-
203 Object.create10:56
-
204 CHALLENGE #206:00
-
205 Inheritance Between "Classes": Constructor Functions21:03
-
206 CHALLENGE #310:37
-
207 Inheritance Between "Classes": ES6 Classes10:46
-
208 Inheritance Between "Classes": Object.create08:53
-
209 Another Class Example10:44
-
210 Encapsulation: Protected Properties and Methods06:47
-
211 Encapsulation: Private Class Fields and Methods16:11
-
212 Chaining Methods04:42
-
213 ES6 Classes Summary07:11
-
214 CHALLENGE #408:54
-
-
Section 15: Mapty App: OOP, Geolocation, External Libraries, and More! [PROJECT]
-
215 Section Intro00:58
-
216 Project Overview05:02
-
217 How to Plan a Web Project17:40
-
218 Using the Geolocation API08:16
-
219 Displaying a Map Using Leaflet Library13:48
-
220 Displaying a Map Marker19:54
-
221 Rendering Workout Input Form16:42
-
222 Project Architecture09:28
-
223 Refactoring for Project Architecture24:05
-
224 Managing Workout Data: Creating Classes16:18
-
225 Creating a New Workout34:06
-
226 Rendering Workouts24:19
-
227 Move to Marker On Click16:32
-
228 Working with localStorage25:31
-
229 Final Considerations05:41
-
-
Section 16: Asynchronous JavaScript: Promises, Async/Await, and AJAX
-
230 Section Intro00:55
-
231 Asynchronous JavaScript, AJAX and APIs17:57
-
232 Our First AJAX Call: XMLHttpRequest19:10
-
233 [OPTIONAL] How the Web Works: Requests and Responses13:38
-
234 Welcome to Callback Hell13:52
-
235 Promises and the Fetch API09:25
-
236 Consuming Promises09:24
-
237 Chaining Promises09:13
-
238 Handling Rejected Promises16:13
-
239 Throwing Errors Manually15:23
-
240 CHALLENGE #116:31
-
241 Asynchronous Behind the Scenes: The Event Loop17:53
-
242 The Event Loop in Practice09:15
-
243 Building a Simple Promise20:16
-
244 Promisifying the Geolocation API13:26
-
245 CHALLENGE #215:53
-
246 Consuming Promises with Async/Await15:06
-
247 Error Handling With try...catch10:22
-
248 Returning Values from Async Functions14:39
-
249 Running Promises in Parallel10:56
-
250 Other Promise Combinators: race, allSettled and any13:19
-
251 CHALLENGE #317:30
-
-
Section 17: Modern JavaScript Development: Modules, Tooling, and Functional
-
252 Section Intro00:47
-
253 An Overview of Modern JavaScript Development06:38
-
254 An Overview of Modules in JavaScript15:01
-
255 Exporting and Importing in ES6 Modules22:38
-
256 Top-Level await (ES2022)14:44
-
257 The Module Pattern10:19
-
258 CommonJS Modules04:24
-
259 A Brief Introduction to the Command Line12:27
-
260 Introduction to NPM18:40
-
261 Bundling With Parcel and NPM Scripts21:39
-
262 Configuring Babel and Polyfilling18:02
-
263 Review: Writing Clean and Modern JavaScript10:26
-
264 Let's Fix Some Bad Code: Part 123:20
-
265 Declarative and Functional JavaScript Principles12:25
-
266 Let's Fix Some Bad Code: Part 238:09
-
-
Section 18: Forkify App: Building a Modern Application [PROJECT]
-
267 Section Intro00:56
-
268 Project Overview and Planning (I)14:21
-
269 Loading a Recipe from API24:11
-
270 Rendering the Recipe22:23
-
271 Listening For load and hashchange Events11:02
-
272 The MVC Architecture16:32
-
273 Refactoring for MVC38:53
-
274 Helpers and Configuration Files21:23
-
275 Event Handlers in MVC: Publisher-Subscriber Pattern15:08
-
276 Implementing Error and Success Messages11:34
-
277 Implementing Search Results - Part 125:46
-
278 Implementing Search Results - Part 228:15
-
279 Implementing Pagination - Part 112:18
-
280 Implementing Pagination - Part 237:05
-
281 Project Planning II03:13
-
282 Updating Recipe Servings26:40
-
283 Developing a DOM Updating Algorithm34:22
-
284 Implementing Bookmarks - Part 125:59
-
285 Implementing Bookmarks - Part 218:31
-
286 Storing Bookmarks With localStorage18:22
-
287 Project Planning III02:08
-
288 Uploading a New Recipe - Part 117:43
-
289 Uploading a New Recipe - Part 240:37
-
290 Uploading a New Recipe - Part 319:58
-
291 Wrapping Up: Final Considerations14:45
-
-
Section 19: Setting Up Git and Deployment
-
292 Section Intro00:44
-
293 Simple Deployment With Netlify11:18
-
294 Setting Up Git and GitHub07:39
-
295 Git Fundamentals19:36
-
296 Pushing to GitHub09:30
-
297 Setting Up Continuous Integration With Netlify10:06
-
-
Section 20: The End!
-
298 Where to Go from Here03:00
-
-
Section 21: [LEGACY] Access the Old Course
The #1 bestselling JavaScript course on Udemy!
"Really, really well made course. Super in-depth, with great challenges and projects that will solidify your Javascript understanding. I found the lectures were paced perfectly -- Jonas doesn't skip over anything that might be useful to a JS developer" — Carson Bartholomew
JavaScript is the most popular programming language in the world. It powers the entire modern web. It provides millions of high-paying jobs all over the world.
That's why you want to learn JavaScript too. And you came to the right place!
Why is this the right JavaScript course for you?
This is the most complete and in-depth JavaScript course on Udemy (and maybe the entire internet!). It's an all-in-one package that will take you from the very fundamentals of JavaScript, all the way to building modern and complex applications.
You will learn modern JavaScript from the very beginning, step-by-step. I will guide you through practical and fun code examples, important theory about how JavaScript works behind the scenes, and beautiful and complete projects.
You will become ready to continue learning advanced front-end frameworks like React, Vue, Angular, or Svelte.
You will also learn how to think like a developer, how to plan application features, how to architect your code, how to debug code, and a lot of other real-world skills that you will need in your developer job.
And unlike other courses, this one actually contains beginner, intermediate, advanced, and even expert topics, so you don't have to buy any other course in order to master JavaScript from the ground up!
But... You don't have to go into all these topics. This is a huge course, because, after all, it's "The Complete JavaScript Course". In fact, it's like many courses in one! But you can become an excellent developer by watching only parts of the course. That's why I built this course in a very modular way, and designed pathways that will take you through the course faster.
By the end of the course, you will have the knowledge and confidence that you need in order to ace your job interviews and become a professional developer.
Why am I the right JavaScript teacher for you?
My name is Jonas, I'm an experienced web developer and designer, and one of Udemy's top instructors. I have been teaching this bestselling course since 2016 to over 850,000 developers, always listening to feedback and understanding exactly how students actually learn.
I know how students learn JavaScript and what they need in order to master it. And with that knowledge, I designed the ideal course curriculum. It's a unique blend of real-world projects, deep explanations, theory lectures, and challenges, that will take you from zero to an expert and confident JavaScript developer in just a couple of weeks.
So what exactly is covered in the course?
Build 5 beautiful real-world projects for your portfolio! In these projects, you will learn how to plan and architect your applications using flowcharts and common JavaScript patterns
Master the JavaScript fundamentals: variables, if/else, operators, boolean logic, functions, arrays, objects, loops, strings, and more
Learn modern JavaScript (ES6+) from the beginning: arrow functions, destructuring, spread operator, default arguments, optional chaining, and more
How JavaScript works behind the scenes: engines, the call stack, hoisting, scoping, the 'this' keyword, reference values, and more.
Deep dive into functions: arrow functions, first-class and higher-order functions, bind, and closures.
Deep dive into object-oriented programming: prototypal inheritance, constructor functions (ES5), classes (ES6), encapsulation, abstraction, inheritance, and polymorphism. [This is like a small standalone course]
Deep dive into asynchronous JavaScript: the event loop, promises, async/await, and error handling. You will use these to access data from third-party APIs with AJAX calls. [This is like a small standalone course]
Learn modern tools that are used by professional web developers: NPM, Parcel, Babel, and ES6 modules
Check out the course curriculum for an even more detailed overview of the content :)
This is what's also included in the package:
Up-to-date HD-quality videos, that are easy to search and reference (great for Udemy Business learners)
Professional English captions (not the auto-generated ones)
Downloadable starter code and final code for each section
Downloadable slides for 40+ theory videos
25+ coding challenges and 25+ assignments to practice your new skills
Does any of these look like you? If so, then start this adventure today, and join me and 850,000+ other developers in the only JavaScript course that you will ever need!