Course Contents
-
Section 1: Welcome, Welcome, Welcome!
-
1 The Complete JavaScript Course 2025: From Zero to Expert!03:14
-
2 Course Structure and Projects05:25
-
3 Watch Before You Start!06:09
-
4 Setting Up Our Code Editor08:23
-
-
Section 2: JavaScript Fundamentals – Part 1
-
5 Section Intro00:53
-
6 Hello World!05:57
-
7 A Brief Introduction to JavaScript11:18
-
8 Linking a JavaScript File15:55
-
9 Values and Variables16:05
-
10 Data Types19:19
-
11 let, const and var09:58
-
12 Basic Operators19:31
-
13 Operator Precedence11:19
-
14 CHALLENGE #1: Video Solution07:20
-
15 Strings and Template Literals10:57
-
16 Taking Decisions: if / else Statements12:50
-
17 CHALLENGE #2: Video Solution05:20
-
18 Type Conversion and Coercion16:40
-
19 Truthy and Falsy Values10:03
-
20 Equality Operators: == vs. ===15:41
-
21 Boolean Logic08:30
-
22 Logical Operators10:37
-
23 CHALLENGE #3: Video Solution11:42
-
24 The switch Statement13:10
-
25 Statements and Expressions06:08
-
26 The Conditional (Ternary) Operator10:02
-
27 CHALLENGE #4: Video Solution05:57
-
28 JavaScript Releases: ES5, ES6+ and ESNext14:19
-
-
Section 3: JavaScript Fundamentals – Part 2
-
29 Section Intro00:36
-
30 Activating Strict Mode10:27
-
31 Functions19:08
-
32 Function Declarations vs. Expressions10:39
-
33 Arrow Functions09:52
-
34 Functions Calling Other Functions10:07
-
35 Reviewing Functions15:37
-
36 CHALLENGE #1: Video Solution14:10
-
37 Introduction to Arrays21:34
-
38 Basic Array Operations (Methods)12:52
-
39 CHALLENGE #2: Video Solution06:54
-
40 Introduction to Objects06:08
-
41 Dot vs. Bracket Notation19:21
-
42 Object Methods23:04
-
43 CHALLENGE #3: Video Solution09:50
-
44 Iteration: The for Loop11:11
-
45 Looping Arrays, Breaking and Continuing22:02
-
46 Looping Backwards and Loops in Loops11:53
-
47 The while Loop11:52
-
48 CHALLENGE #4: Video Solution11:24
-
-
Section 4: How to Navigate This Course
-
49 Pathways and Section Roadmaps04:08
-
-
Section 5: Developer Skills & Editor Setup
-
50 Section Intro00:39
-
51 Setting up Prettier and VS Code16:22
-
52 Installing Node.js and Setting Up a Dev Environment11:32
-
53 Learning How to Code17:42
-
54 How to Think Like a Developer: Become a Problem Solver!10:53
-
55 Using Google, StackOverflow and MDN26:36
-
56 Debugging (Fixing Errors)05:09
-
57 Debugging with the Console and Breakpoints19:25
-
58 CHALLENGE #115:24
-
-
Section 6: [OPTIONAL] HTML & CSS Crash Course
-
59 Section Intro00:40
-
60 Basic HTML Structure and Elements09:32
-
61 Attributes, Classes and IDs13:09
-
62 Basic Styling with CSS12:00
-
63 Introduction to the CSS Box Model20:57
-
-
Section 7: JavaScript in the Browser: DOM and Events [PROJECT]
-
64 Section Intro00:49
-
65 PROJECT #1: Guess My Number!08:47
-
66 What's the DOM and DOM Manipulation06:48
-
67 Selecting and Manipulating Elements08:22
-
68 Handling Click Events12:50
-
69 Implementing the Game Logic19:33
-
70 Manipulating CSS Styles08:17
-
71 CHALLENGE #111:40
-
72 Implementing Highscores07:47
-
73 Refactoring Our Code: The DRY Principle15:05
-
74 PROJECT #2: Modal Window13:21
-
75 Working With Classes16:55
-
76 Handling an "Esc" Keypress Event14:11
-
77 PROJECT #3: Pig Game17:08
-
78 Rolling the Dice15:58
-
79 Switching the Active Player15:16
-
80 Holding Current Score24:55
-
81 Resetting the Game15:38
-
-
Section 8: How JavaScript Works Behind the Scenes
-
82 Section Intro01:31
-
83 An High-Level Overview of JavaScript12:11
-
84 The JavaScript Engine and Runtime13:47
-
85 Execution Contexts and The Call Stack17:45
-
86 Scope and The Scope Chain25:37
-
87 Scoping in Practice21:13
-
88 Variable Environment: Hoisting and The TDZ11:00
-
89 Hoisting and TDZ in Practice14:42
-
90 The this Keyword06:30
-
91 The this Keyword in Practice13:11
-
92 Regular Functions vs. Arrow Functions18:04
-
93 Primitives vs. Objects (Primitive vs. Reference Types)16:06
-
94 Primitives vs. Objects in Practice14:57
-
-
Section 9: Data Structures, Modern Operators and Strings
-
95 Section Intro00:53
-
96 Destructuring Arrays19:33
-
97 Destructuring Objects19:46
-
98 The Spread Operator (...)21:26
-
99 Rest Pattern and Parameters19:01
-
100 Short Circuiting (&& and ||)15:55
-
101 The Nullish Coalescing Operator (??)03:32
-
102 Logical Assignment Operators11:39
-
103 CHALLENGE #114:57
-
104 Looping Arrays: The for-of Loop07:20
-
105 Enhanced Object Literals07:02
-
106 Optional Chaining (?.)16:10
-
107 Looping Objects: Object Keys, Values, and Entries10:09
-
108 CHALLENGE #214:30
-
109 Sets13:18
-
110 Maps: Fundamentals14:03
-
111 Maps: Iteration12:41
-
112 Summary: Which Data Structure to Use?09:40
-
113 CHALLENGE #309:37
-
114 Working With Strings - Part 116:53
-
115 Working With Strings - Part 221:45
-
116 Working With Strings - Part 321:41
-
117 CHALLENGE #415:15
-
118 String Methods Practice16:36
-
-
Section 10: A Closer Look at Functions
-
119 Section Intro00:48
-
120 Default Parameters09:17
-
121 How Passing Arguments Works: Value vs. Reference13:36
-
122 First-Class and Higher-Order Functions05:24
-
123 Functions Accepting Callback Functions15:20
-
124 Functions Returning Functions06:36
-
125 The call and apply Methods16:51
-
126 The bind Method21:33
-
127 CHALLENGE #118:47
-
128 Immediately Invoked Function Expressions (IIFE)07:52
-
129 Closures19:48
-
130 More Closure Examples15:30
-
131 CHALLENGE #205:25
-
-
Section 11: Working With Arrays [PROJECT]
-
132 Section Intro00:53
-
133 Simple Array Methods16:37
-
134 The New at Method06:04
-
135 Looping Arrays: forEach13:46
-
136 forEach With Maps and Sets05:32
-
137 PROJECT: "Bankist" App09:48
-
138 Creating DOM Elements18:44
-
139 CHALLENGE #108:31
-
140 Data Transformations: map, filter, reduce04:40
-
141 The map Method15:40
-
142 Computing Usernames12:14
-
143 The filter Method06:19
-
144 The reduce Method20:57
-
145 CHALLENGE #209:56
-
146 The Magic of Chaining Methods19:39
-
147 CHALLENGE #303:57
-
148 The find Method06:47
-
149 Implementing Login24:18
-
150 Implementing Transfers20:54
-
151 The findIndex Method12:34
-
152 some and every15:11
-
153 flat and flatMap09:32
-
154 Sorting Arrays21:55
-
155 More Ways of Creating and Filling Arrays20:33
-
156 Summary: Which Array Method to Use?06:24
-
157 Array Methods Practice32:21
-
158 CHALLENGE #423:47
-
-
Section 12: Numbers, Dates, Intl and Timers [PROJECT]
-
159 Section Intro00:50
-
160 Converting and Checking Numbers16:46
-
161 Math and Rounding18:14
-
162 The Remainder Operator10:56
-
163 Numeric Separators06:57
-
164 Working with BigInt11:18
-
165 Creating Dates12:55
-
166 Adding Dates to "Bankist" App22:21
-
167 Operations With Dates15:27
-
168 Internationalizing Dates (Intl)17:18
-
169 Internationalizing Numbers (Intl)19:06
-
170 Timers: setTimeout and setInterval13:53
-
171 Implementing a Countdown Timer28:31
-
-
Section 13: Advanced DOM and Events [PROJECT]
-
172 Section Intro01:04
-
173 PROJECT: "Bankist" Website08:49
-
174 How the DOM Really Works10:36
-
175 Selecting, Creating, and Deleting Elements20:28
-
176 Styles, Attributes and Classes21:54
-
177 Implementing Smooth Scrolling15:56
-
178 Types of Events and Event Handlers10:33
-
179 Event Propagation: Bubbling and Capturing05:03
-
180 Event Propagation in Practice17:46
-
181 Event Delegation: Implementing Page Navigation18:48
-
182 DOM Traversing14:35
-
183 Building a Tabbed Component24:08
-
184 Passing Arguments to Event Handlers18:43
-
185 Implementing a Sticky Navigation: The Scroll Event07:55
-
186 A Better Way: The Intersection Observer API24:00
-
187 Revealing Elements on Scroll12:39
-
188 Lazy Loading Images18:30
-
189 Building a Slider Component: Part 123:16
-
190 Building a Slider Component: Part 219:35
-
191 Lifecycle DOM Events09:26
-
192 Efficient Script Loading: defer and async13:30
-
-
Section 14: Object-Oriented Programming (OOP) With JavaScript
-
193 Section Intro01:06
-
194 What is Object-Oriented Programming?20:55
-
195 OOP in JavaScript10:08
-
196 Constructor Functions and the new Operator14:19
-
197 Prototypes14:36
-
198 Prototypal Inheritance and The Prototype Chain10:58
-
199 Prototypal Inheritance on Built-In Objects14:46
-
200 CHALLENGE #107:27
-
201 ES6 Classes12:57
-
202 Setters and Getters13:15
-
203 Static Methods06:24
-
204 Object.create10:56
-
205 CHALLENGE #206:00
-
206 Inheritance Between "Classes": Constructor Functions21:03
-
207 CHALLENGE #310:37
-
208 Inheritance Between "Classes": ES6 Classes10:46
-
209 Inheritance Between "Classes": Object.create08:53
-
210 Another Class Example10:44
-
211 Encapsulation: Protected Properties and Methods06:47
-
212 Encapsulation: Private Class Fields and Methods16:11
-
213 Chaining Methods04:42
-
214 ES6 Classes Summary07:11
-
215 CHALLENGE #408:54
-
-
Section 15: Mapty App: OOP, Geolocation, External Libraries, and More! [PROJECT]
-
216 Section Intro00:58
-
217 Project Overview05:02
-
218 How to Plan a Web Project17:40
-
219 Using the Geolocation API08:16
-
220 Displaying a Map Using Leaflet Library13:48
-
221 Displaying a Map Marker19:54
-
222 Rendering Workout Input Form16:42
-
223 Project Architecture09:28
-
224 Refactoring for Project Architecture24:05
-
225 Managing Workout Data: Creating Classes16:18
-
226 Creating a New Workout34:06
-
227 Rendering Workouts24:19
-
228 Move to Marker On Click16:32
-
229 Working with localStorage25:31
-
230 Final Considerations05:41
-
-
Section 16: Asynchronous JavaScript: Promises, Async/Await, and AJAX
-
231 Section Intro00:55
-
232 Asynchronous JavaScript, AJAX and APIs17:57
-
233 Our First AJAX Call: XMLHttpRequest19:10
-
234 [OPTIONAL] How the Web Works: Requests and Responses13:38
-
235 Welcome to Callback Hell13:52
-
236 Promises and the Fetch API09:25
-
237 Consuming Promises09:24
-
238 Chaining Promises09:13
-
239 Handling Rejected Promises16:13
-
240 Throwing Errors Manually15:23
-
241 CHALLENGE #116:31
-
242 Asynchronous Behind the Scenes: The Event Loop17:53
-
243 The Event Loop in Practice09:15
-
244 Building a Simple Promise20:16
-
245 Promisifying the Geolocation API13:26
-
246 CHALLENGE #215:53
-
247 Consuming Promises with Async/Await15:06
-
248 Error Handling With try...catch10:22
-
249 Returning Values from Async Functions14:39
-
250 Running Promises in Parallel10:56
-
251 Other Promise Combinators: race, allSettled and any13:19
-
252 CHALLENGE #317:30
-
-
Section 17: Modern JavaScript Development: Modules, Tooling, and Functional
-
253 Section Intro00:47
-
254 An Overview of Modern JavaScript Development06:38
-
255 An Overview of Modules in JavaScript15:01
-
256 Exporting and Importing in ES6 Modules22:38
-
257 Top-Level await (ES2022)14:44
-
258 The Module Pattern10:19
-
259 CommonJS Modules04:24
-
260 A Brief Introduction to the Command Line12:27
-
261 Introduction to NPM18:40
-
262 Bundling With Parcel and NPM Scripts21:39
-
263 Configuring Babel and Polyfilling18:02
-
264 Review: Writing Clean and Modern JavaScript10:26
-
265 Let's Fix Some Bad Code: Part 123:20
-
266 Declarative and Functional JavaScript Principles12:25
-
267 Let's Fix Some Bad Code: Part 238:09
-
-
Section 18: Forkify App: Building a Modern Application [PROJECT]
-
268 Section Intro00:56
-
269 Project Overview and Planning (I)14:21
-
270 Loading a Recipe from API24:11
-
271 Rendering the Recipe22:23
-
272 Listening For load and hashchange Events11:02
-
273 The MVC Architecture16:32
-
274 Refactoring for MVC38:53
-
275 Helpers and Configuration Files21:23
-
276 Event Handlers in MVC: Publisher-Subscriber Pattern15:08
-
277 Implementing Error and Success Messages11:34
-
278 Implementing Search Results - Part 125:46
-
279 Implementing Search Results - Part 228:15
-
280 Implementing Pagination - Part 112:18
-
281 Implementing Pagination - Part 237:05
-
282 Project Planning II03:13
-
283 Updating Recipe Servings26:40
-
284 Developing a DOM Updating Algorithm34:22
-
285 Implementing Bookmarks - Part 125:59
-
286 Implementing Bookmarks - Part 218:31
-
287 Storing Bookmarks With localStorage18:22
-
288 Project Planning III02:08
-
289 Uploading a New Recipe - Part 117:43
-
290 Uploading a New Recipe - Part 240:37
-
291 Uploading a New Recipe - Part 319:58
-
292 Wrapping Up: Final Considerations14:45
-
-
Section 19: Setting Up Git and Deployment
-
293 Section Intro00:44
-
294 Simple Deployment With Netlify11:18
-
295 Setting Up Git and GitHub07:39
-
296 Git Fundamentals19:36
-
297 Pushing to GitHub09:30
-
298 Setting Up Continuous Integration With Netlify10:06
-
-
Section 20: The End!
-
299 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!