Course Overview
The #1 bestselling JavaScript course on Udemy!
Just updated with ES2024 and ES2025!
"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!
FAQ
FAQ area empty
Course curriculum
-
Section Intro
Xem trước -
Hello World!
-
A Brief Introduction to JavaScript
Xem trước -
Linking a JavaScript File
-
Values and Variables
Xem trước -
Data Types
-
Let, const and var
Xem trước -
Basic Operators
-
Operator Precedence
-
CHALLENGE #1: Video Solution
-
Strings and Template Literals
-
Taking Decisions: if / else Statements
-
CHALLENGE #2: Video Solution
-
Type Conversion and Coercion
-
Truthy and Falsy Values
-
Equality Operators: == vs. ===
-
Boolean Logic
-
Logical Operators
-
CHALLENGE #3: Video Solution
-
The switch Statement
-
Statements and Expressions
-
The Conditional (Ternary) Operator
-
CHALLENGE #4: Video Solution
-
JavaScript Releases: ES5, ES6+ and ESNext
-
Section Intro
-
Activating Strict Mode
-
Functions
-
Function Declarations vs. Expressions
-
Arrow Functions
-
Functions Calling Other Functions
-
Reviewing Functions
-
CHALLENGE #1: Video Solution
-
Introduction to Arrays
-
Basic Array Operations (Methods)
-
CHALLENGE #2: Video Solution
-
Introduction to Objects
-
Dot vs. Bracket Notation
-
Object Methods
-
CHALLENGE #3: Video Solution
-
Iteration: The for Loop
-
Looping Arrays, Breaking and Continuing
-
Looping Backwards and Loops in Loops
-
The while Loop
-
CHALLENGE #4: Video Solution
-
Section Intro
-
Setting up Prettier and VS Code
-
Installing Node.js and Setting Up a Dev Environment
-
Learning How to Code
-
How to Think Like a Developer: Become a Problem Solver!
-
Using Google, StackOverflow and MDN
-
Debugging (Fixing Errors)
-
Debugging with the Console and Breakpoints
-
CHALLENGE #1
-
The Rise of AI Tools (ChatGPT, Copilot, Cursor AI, etc.)
-
Solving CHALLENGE #2 With AI
-
Section Intro
-
PROJECT #1: Guess My Number!
-
What's the DOM and DOM Manipulation
-
Selecting and Manipulating Elements
-
Handling Click Events
-
Implementing the Game Logic
-
Manipulating CSS Styles
-
CHALLENGE #1
-
Implementing Highscores
-
Refactoring Our Code: The DRY Principle
-
PROJECT #2: Modal Window
-
Working With Classes
-
Handling an "Esc" Keypress Event
-
PROJECT #3: Pig Game
-
Rolling the Dice
-
Switching the Active Player
-
Holding Current Score
-
Resetting the Game
-
Section Intro
-
An High-Level Overview of JavaScript
-
The JavaScript Engine and Runtime
-
Execution Contexts and The Call Stack
-
Scope and The Scope Chain
-
Scoping in Practice
-
Variable Environment: Hoisting and The TDZ
-
Hoisting and TDZ in Practice
-
The this Keyword
-
The this Keyword in Practice
-
Regular Functions vs. Arrow Functions
-
Memory Management: Primitives vs. Objects
-
Object References in Practice (Shallow vs. Deep Copies)
-
Memory Management: Garbage Collection
-
Section Intro
-
Destructuring Arrays
-
Destructuring Objects
-
The Spread Operator (...)
-
Rest Pattern and Parameters
-
Short Circuiting (&& and ||)
-
The Nullish Coalescing Operator (??)
-
Logical Assignment Operators
-
CHALLENGE #1
-
Looping Arrays: The for-of Loop
-
Enhanced Object Literals
-
Optional Chaining (?.)
-
Looping Objects: Object Keys, Values, and Entries
-
CHALLENGE #2
-
Sets
-
New Operations to Make Sets Useful!
-
Maps: Fundamentals
-
Maps: Iteration
-
Summary: Which Data Structure to Use?
-
CHALLENGE #3
-
Working With Strings - Part 1
-
Working With Strings - Part 2
-
Working With Strings - Part 3
-
CHALLENGE #4
-
String Methods Practice
-
Section Intro
-
Default Parameters
-
How Passing Arguments Works: Value vs. Reference
-
First-Class and Higher-Order Functions
-
Functions Accepting Callback Functions
-
Functions Returning Functions
-
The call and apply Methods
-
The bind Method
-
CHALLENGE #1
-
Immediately Invoked Function Expressions (IIFE)
-
Closures
-
More Closure Examples
-
CHALLENGE #2
-
Section Intro
-
Simple Array Methods
-
The New at Method
-
Looping Arrays: forEach
-
ForEach With Maps and Sets
-
PROJECT: "Bankist" App
-
Creating DOM Elements
-
CHALLENGE #1
-
Data Transformations: map, filter, reduce
-
The map Method
-
Computing Usernames
-
The filter Method
-
The reduce Method
-
CHALLENGE #2
-
The Magic of Chaining Methods
-
CHALLENGE #3
-
The find Method
-
Implementing Login
-
Implementing Transfers
-
The findIndex Method
-
The New findLast and findLastIndex Methods
-
Some and every
-
Flat and flatMap
-
CHALLENGE #4
-
Sorting Arrays
-
Array Grouping
-
More Ways of Creating and Filling Arrays
-
Non-Destructive Alternatives: toReversed, toSorted, toSpliced, with
-
Summary: Which Array Method to Use?
-
Array Methods Practice
-
CHALLENGE #5
-
Section Intro
-
Converting and Checking Numbers
-
Math and Rounding
-
The Remainder Operator
-
Numeric Separators
-
Working with BigInt
-
Creating Dates
-
Adding Dates to "Bankist" App
-
Fixing a Sorting Bug
-
Operations With Dates
-
Internationalizing Dates (Intl)
-
Internationalizing Numbers (Intl)
-
Timers: setTimeout and setInterval
-
Implementing a Countdown Timer
-
Section Intro
-
PROJECT: "Bankist" Website
-
How the DOM Really Works
-
Selecting, Creating, and Deleting Elements
-
Styles, Attributes and Classes
-
Implementing Smooth Scrolling
-
Types of Events and Event Handlers
-
Event Propagation: Bubbling and Capturing
-
Event Propagation in Practice
-
Event Delegation: Implementing Page Navigation
-
DOM Traversing
-
Building a Tabbed Component
-
Passing Arguments to Event Handlers
-
Implementing a Sticky Navigation: The Scroll Event
-
A Better Way: The Intersection Observer API
-
Revealing Elements on Scroll
-
Fixing a Small Scrolling Bug
-
Lazy Loading Images
-
Building a Slider Component: Part 1
-
Building a Slider Component: Part 2
-
Lifecycle DOM Events
-
Efficient Script Loading: defer and async
-
Section Intro
-
What is Object-Oriented Programming?
-
OOP in JavaScript
-
Constructor Functions and the new Operator
-
Prototypes
-
Prototypal Inheritance and The Prototype Chain
-
Prototypal Inheritance on Built-In Objects
-
CHALLENGE #1
-
ES6 Classes
-
Setters and Getters
-
Static Methods
-
Object.create
-
CHALLENGE #2
-
Inheritance Between "Classes": Constructor Functions
-
CHALLENGE #3
-
Inheritance Between "Classes": ES6 Classes
-
Inheritance Between "Classes": Object.create
-
Another Class Example
-
Encapsulation: Private Class Fields and Methods
-
Chaining Methods
-
ES6 Classes Summary
-
CHALLENGE #4
-
Section Intro
-
Project Overview
-
How to Plan a Web Project
-
Using the Geolocation API
-
Displaying a Map Using Leaflet Library
-
Displaying a Map Marker
-
Rendering Workout Input Form
-
Project Architecture
-
Refactoring for Project Architecture
-
Managing Workout Data: Creating Classes
-
Creating a New Workout
-
Rendering Workouts
-
Move to Marker On Click
-
Working with localStorage
-
Final Considerations
-
Section Intro
-
Asynchronous JavaScript, AJAX and APIs
-
Our First AJAX Call: XMLHttpRequest
-
[OPTIONAL] How the Web Works: Requests and Responses
-
Welcome to Callback Hell
-
Promises and the Fetch API
-
Consuming Promises
-
Chaining Promises
-
Handling Rejected Promises
-
Throwing Errors Manually
-
CHALLENGE #1
-
Asynchronous Behind the Scenes: The Event Loop
-
The Event Loop in Practice
-
Building a Simple Promise
-
Promisifying the Geolocation API
-
CHALLENGE #2
-
Consuming Promises with Async/Await
-
Error Handling With try...catch
-
Returning Values from Async Functions
-
Running Promises in Parallel
-
Other Promise Combinators: race, allSettled and any
-
CHALLENGE #3
-
Section Intro
-
An Overview of Modern JavaScript Development
-
An Overview of Modules in JavaScript
-
Exporting and Importing in ES6 Modules
-
Top-Level await (ES2022)
-
The Module Pattern
-
CommonJS Modules
-
A Brief Introduction to the Command Line
-
Introduction to NPM
-
Bundling With Parcel and NPM Scripts
-
Configuring Babel and Polyfilling
-
Review: Writing Clean and Modern JavaScript
-
Let's Fix Some Bad Code: Part 1
-
Declarative and Functional JavaScript Principles
-
Let's Fix Some Bad Code: Part 2
-
Section Intro
-
Project Overview and Planning (I)
-
Loading a Recipe from API
-
Rendering the Recipe
-
Listening For load and hashchange Events
-
The MVC Architecture
-
Refactoring for MVC
-
Helpers and Configuration Files
-
Event Handlers in MVC: Publisher-Subscriber Pattern
-
Implementing Error and Success Messages
-
Implementing Search Results - Part 1
-
Implementing Search Results - Part 2
-
Implementing Pagination - Part 1
-
Implementing Pagination - Part 2
-
Project Planning II
-
Updating Recipe Servings
-
Developing a DOM Updating Algorithm
-
Implementing Bookmarks - Part 1
-
Implementing Bookmarks - Part 2
-
Storing Bookmarks With localStorage
-
Project Planning III
-
Uploading a New Recipe - Part 1
-
Uploading a New Recipe - Part 2
-
Uploading a New Recipe - Part 3
-
Wrapping Up: Final Considerations
Requirment
-
No coding experience is necessary to take this course! I take you from beginner to expert!
-
Any computer and OS will work — Windows, macOS or Linux. We will set up your text editor the course.
-
A basic understanding of HTML and CSS is a plus, but not a must! The course includes an HTML and CSS crash course.
Outcomes
-
Become an advanced, confident, and modern JavaScript developer from scratch
-
Build 6 beautiful real-world projects for your portfolio (not boring toy apps)
-
Become job-ready by understanding how JavaScript really works behind the scenes
-
How to think and work like a developer: problem-solving, researching, workflows
-
JavaScript fundamentals: variables, if/else, operators, boolean logic, functions, arrays, objects, loops, strings, etc.
-
Modern ES6+ from the beginning: arrow functions, destructuring, spread operator, optional chaining (ES2020), etc.
-
Modern OOP: Classes, constructors, prototypal inheritance, encapsulation, etc.
-
Complex concepts like the 'this' keyword, higher-order functions, closures, etc.
-
Asynchronous JavaScript: Event loop, promises, async/await, AJAX calls and APIs
-
How to architect your code using flowcharts and common patterns
-
Modern tools for 2022 and beyond: NPM, Parcel, Babel and ES6 modules
-
Practice your skills with 50+ challenges and assignments (solutions included)
-
Get fast and friendly support in the Q&A area
-
Course pathways: design your unique learning path according to your goals!
Instructor
Nguyễn Đình Cường
1.2
-
1 Student
-
330 Courses
-
1253 reviews
Xin chào các bạn, tôi là Nguyễn Đình Cường, một lập trình viên và giảng viên đam mê công nghệ với hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Tôi tốt nghiệp từ Bưu Chính Viễn Thông và đã từng làm việc cho một số công ty công nghệ hàng đầu như FPT Software và VinGroup. Với chuyên môn chính là phát triển ứng dụng web, tôi đã làm việc với nhiều công nghệ như HTML, CSS, JavaScript, React cho front-end và Node.js, Express, MongoDB cho back-end. Không chỉ dừng lại ở việc viết mã, tôi còn yêu thích tìm hiểu sâu về thiết kế hệ thống và kiến trúc phần mềm. Tôi tin rằng quá trình học lập trình không chỉ đơn thuần là lý thuyết, mà còn là sự trải nghiệm thực tế và giải quyết vấn đề. Trong các khóa học của mình, tôi cố gắng cung cấp cho học viên những bài giảng thú vị và dễ hiểu, cùng với các bài tập thực hành giúp củng cố kiến thức. Tôi hy vọng rằng qua các khóa học của mình, bạn sẽ không chỉ học được cách viết mã, mà còn phát triển tư duy lập trình và kỹ năng giải quyết vấn đề. Hãy cùng nhau khám phá thế giới lập trình và biến ý tưởng của bạn thành hiện thực! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại liên hệ với tôi. Tôi rất vui được hỗ trợ bạn trong hành trình học tập của mình!
View Details