JavaScript - The Complete Guide 2020 (Beginner + Advanced)
4.6 (8,686 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
46,813 students enrolled

JavaScript - The Complete Guide 2020 (Beginner + Advanced)

Modern JavaScript from the beginning - all the way up to JS expert level! THE must-have JavaScript resource in 2020.
4.6 (8,686 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
46,813 students enrolled
Last updated 7/2020
English
English
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 52 hours on-demand video
  • 74 articles
  • 696 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • JavaScript from scratch - beginner to advanced
  • All core features and concepts you need to know in modern JavaScript development
  • Everything you need to become a JavaScript expert and apply for JavaScript jobs
  • Project-driven learning with plenty of examples
  • All about variables, functions, objects and arrays
  • Object-oriented programming
  • Deep dives into prototypes, JavaScript engines & how it works behind the scenes
  • Manipulating web pages (= the DOM) with JavaScript
  • Event handling, asynchronous coding and Http requests
  • Meta-programming, performance optimization, memory leak busting
  • Testing, security and deployment
  • And so much more!
Course content
Expand all 614 lectures 52:36:34
+ Introduction
14 lectures 59:25

Welcome to the course, amazing to have you on board of this JavaScript course! Let me walk you through the content of this complete JavaScript course and explain what you're going to learn!

Preview 01:50

What is JavaScript and why do we use it? What's awesome about it and what's its role in modern web development? Let's take a closer and understand the importance of JavaScript!

Preview 03:44

Let's dig deeper into the core fundamentals of JavaScript and add it our first little web application!

Preview 08:57
Join our Online Learning Community
00:21

Let's have a look at how JavaScript is executed, what the browser's role is and how all these pieces fit together!

Preview 03:14

JavaScript is a weakly typed language - but what does that mean? In this lecture, we'll explore the different kinds of programming languages and how JavaScript fits into the picture!

Preview 03:24

JavaScript is a versatile language. That's awesome - but what does it mean? Let's explore the concept of host environments and see how JavaScript fits into that picture!

Preview 04:40

We know what JavaScript is about - but what is this course about? This is obviously a very comprehensive JavaScript course, in this lecture, I'll walk you through the content of this course and what you can get out of it!

Preview 06:00

Your success matters to me! In this lecture I'll explain how you can get the most out of this course and get the most value for your money.

Preview 02:36

This course comes with tons of content and resources - here's how to use them!

Preview 01:02

We got JavaScript and we got Java. What's the difference, how are they related? Or are they maybe not related at all? Let's find the answer!

Preview 04:02

JavaScript is a modern programming language with a colorful past and many new features added over time. Let's find out how it changed and is managed today!

Preview 06:03

We're ready to go! Now let's set up a development environment that allows us to write code efficiently and progress quickly! 

Preview 11:12

Got questions? Here are the answers!

Preview 02:20
+ Basics: Variables, Data Types, Operators & Functions
39 lectures 03:15:33
Module Introduction
01:17
Setting Up the Project
04:25
More on Version Control & Git
00:35
Adding JavaScript to the Website
06:42
Introducing Variables & Constants
05:17
Declaring & Defining Variables
07:10
Working with Variables & Operators
06:17

Variables and operators are extremely important in any script you're going to write. Time to check your knowledge!

Variables & Operators
6 questions
Understanding the Starting Code
01:21
Data Types: Numbers & Strings (Text)
06:01
Using Constants
05:11
More on Strings
15:51

Do you understand numbers, strings and constants?

Data Types & Constants
5 questions
Time to apply your knowledge about variables and operators in a small assignment.
Time to Practice: Variables, Constants, Operators & Core Data Types
1 question
Introducing Functions
05:50
Adding A Custom Function
11:22
Code Styles, Conventions & Syntax
01:53
Returning Values
04:31
The (Un)Importance of Code Order
04:34
An Introduction to Global & Local Scope
05:31
"Shadowed Variables"
00:48
More about the "return" Statement
02:24
Executing Functions "Indirectly"
11:10
"Indirect" vs "Direct" Function Execution - Summary
01:09

Just like variables, functions are kind of the meat of any program. It's extremely important that we're all on the same level, so time to check that!

Functions & Scope
6 questions
Time to practice your knowledge about functions!
Time to Practice: Functions
1 question
Converting Data Types
06:14
Mixing Numbers & Strings
00:32
Splitting Code into Functions
05:49
Connecting all Buttons to Functions
07:43
Working with Code Comments
04:09
More Operators!
06:39
More Core Data Types!
04:31
Using Arrays
08:53
Creating Objects
06:02
Objects - Common Syntax Gotchas
00:33
Accessing Object Data
02:51

Arrays and objects are core data types in most programming languages - they definitely are in JavaScript. Let's explore your knowledge!

Arrays & Objects
5 questions
Adding a Re-Usable Function That Uses Objects
05:24
undefined, null & NaN
06:20
The "typeof" Operator
03:12

These types are ... weird. Is their meaning clear though?

"undefined", "null" & "NaN"
4 questions
Importing Scripts Correctly with "defer" & "async"
14:37
Importing JavaScript - Summary
00:06
Wrap Up
02:13
Useful Resources & Links
00:23
+ Efficient Development & Debugging
19 lectures 58:36
Module Introduction
01:28
Efficient Development & Debugging - An Overview
03:18
Configuring the IDE Look & Feel
02:25
Using Shortcuts
04:12
Working with Auto-Completion & IDE Hints
04:34
Installing IDE Extensions
02:04
Tweaking Editor Settings
02:15
Utilizing Different IDE Views
01:41
Finding Help & Working with MDN
05:53
The ECMAScript Standard
00:16
How to "google" Correctly
01:44
Debugging JavaScript - An Overview
03:17
An Error Message! No Reason To Panic!
04:46
Using console.log() to look "into the Code"
03:49
Next-Level Debugging with the Chrome Devtools & Breakpoints
08:20
Testing Code Changes Directly in the Devtools
02:05
Debugging Code directly Inside VS Code
04:55
Wrap Up
01:22
Useful Resources & Links
00:12
+ Working with Control Structures (if Statements, Loops, Error Handling)
38 lectures 03:52:16
Module Introduction
02:26
Introducing "if" Statements & Boolean (Comparison) Operators
09:26
Using Booleans in Conditions & More on Text Comparisons
01:05
Using "if" Statements
07:23
Working with "if", "else" and "else-if"
05:10
Beware When Comparing Objects & Arrays for Equality!
04:06
The Logical AND and OR Operators
09:10
Understanding Operator Precedence
07:20

Time to check the very basics about if statements and the operators you use there.

if & Boolean Operators - The Basics
7 questions
Beyond true/ false: "Truthy" and "Falsy" Values
07:30
Coercion vs Conversion
01:08

A pretty cool concept - hence it's important to understand (and test!) it.

Falsy and Truthy Values
4 questions
Setting Up a Bigger Example Project (The "Monster Killer")
02:59
Adding an "Attack" Function
07:57
Using "if" Statements for Checking the Win-Condition
09:17
Adding More "if" Statements & A "Strong Attack" Functionality
07:41
Time for a "Heal Player" Functionality!
10:15
Controlling the Conditional Bonus Life (Without Boolean Operators!)
05:59
Adding a "Reset Game" Functionality
06:00
Validating User Input
06:17
Utilizing Global Constants as Identifiers in Conditional Code
03:20
Adding a Conditional Battle Log
16:37
Introducing the Ternary Operator
07:31
A Bit of Theory: Statements vs Expressions
01:40
Logical Operator "Tricks" & Shorthands
12:58
Logical Operators - A Quick Summary
01:03

Throughout this module, we worked a lot with "if" statements and logical operators. Do you understand how it works?

Logical Operators & How They Work
8 questions
Working with the "switch-case" Statement
07:10
Introducing Loops
06:40
The "for" Loop
07:38
The "for-of" Loop
05:16
The "for-in" Loop
06:49
The "while" & "do-while" Loops
08:00

Loops are a crucial concept - not just in JavaScript. Time to check your knowledge.

Loops - Basics
7 questions
Time to apply your knowledge about control structures in this small assignment.
Time to Practice: Control Structures
1 question
Controlling Loops with "break"
08:11
Controlling Iterations with "continue"
02:21
More Control with Labeled Statements
06:26

You'll not need break and continue in every loop you write - but it's still important to understand what these keywords do.

break & continue
6 questions
Error Handling with "try-catch" - An Introduction
02:25
Throwing Custom Errors
05:16
Working with "try-catch" to Catch & Handle Errors
08:14

There will be (unavoidable) errors in many programs. Time to check your knowledge about the error handling basics.

Error Handling
3 questions
Wrap Up
03:21
Useful Resources & Links
00:10
+ Behind the Scenes & The (Weird) Past (ES3, ES5) & Present (ES6+) of JavaScript
12 lectures 01:33:48
Module Introduction
01:43
ES5 vs ES6+ ("Next Gen JS") - Evolution of JavaScript
08:14
var vs let & const - Introducing "Block Scope"
14:32
Understanding "Hoisting"
04:07
Strict Mode & Writing Good Code
05:46

We had a look at some important behaviors of JavaScript - time to double-check your knowledge!

"JavaScript Specialties"
3 questions
How Code is Parsed & Compiled
08:16
Inside the JavaScript Engine - How the Code Executes
15:59
[DEEP DIVE] JavaScript Language vs Browser APIs
01:42
Primitive vs Reference Values
19:24
Garbage Collection & Memory Management
12:00
Wrap Up
01:55
Useful Resources & Links
00:10
+ More on Functions
22 lectures 01:40:00
Module Introduction
01:31
Recapping Functions Knowledge - What We Know Thus Far
01:52
Parameters vs Arguments
00:26
Functions vs Methods
05:46
Functions are Objects!
02:47
Function Expressions: Storing Functions in Variables
05:12
Function Expressions vs Function Declarations
02:47
Anonymous Functions
05:54
Working on the Project: Adding User Choices to the Game
07:44
Implementing the Core Game Logic
07:20
Introducing Arrow Functions
08:41
Different Arrow Function Syntaxes
01:08

As you learned, there are multiple ways of creating functions - time to check your knowledge!

Creating Functions
3 questions
Outputting Messages to the User
03:53
Default Arguments in Functions
10:45
Introducing Rest Parameters ("Rest Operator")
08:57
Creating Functions Inside of Functions
03:04
Understanding Callback Functions
06:09
We learned a lot about functions - time to practice the knowledge you gained on them!
Time to Practice: Functions
1 question
Working with "bind()"
08:39

Time to check the more advanced functions features!

Functions - Advanced
3 questions
Adding bind() to the Calculator Project
03:47
call() and apply()
01:18
Wrap Up
02:10
Useful Resources & Links
00:09
+ Working with the DOM (Browser HTML Code) in JavaScript
38 lectures 03:38:27
Module Introduction
01:48
What's the "DOM"?
06:00
Document and Window Object
06:20
Understanding the DOM and how it's created
07:07
Nodes & Elements - Querying the DOM Overview
05:55
Selecting Elements in the DOM
09:54
Summary: Node Query Methods
01:00
Exploring and Changing DOM Properties
07:37
Attributes vs Properties
08:58
Selecting Multiple Elements & Summary
05:13

Time to check your knowledge about the important DOM basics.

DOM Basics
5 questions
Time to practice your knowledge on querying the DOM!
Time to Practice: DOM Querying
1 question
Traversing the DOM - Overview
06:22
Traversing Child Nodes
09:15
Using parentNode & parentElement
05:01
Selecting Sibling Elements
04:05
DOM Traversal vs Query Methods
04:35
Styling DOM Elements
12:18
Creating Elements with JS - Overview
02:42
Adding Elements via HTML in Code
07:42
Adding Elements via createElement()
05:42
Inserting DOM Elements
08:15
Cloning DOM Nodes
01:45
Live Node Lists vs Static Node Lists
04:55
Removing Elements
01:56
Insertion & Removal Method Summary
02:38
Summary: Insert, Replace, Remove
01:52
Setting Up the Practice Project
02:16
Selecting the Modal and "Add" Button
08:58
Opening a Modal by Changing CSS Classes
05:01
Controlling the Backdrop
08:04
Fetching and Validating User Input
08:06
Creating a Movie in JavaScript & Clearing the Input
04:00
Rendering Movie Items on the Screen
08:24
Deleting Movie Elements
09:12
Showing & Hiding the "Are you sure?" Dialog
07:08
Starting with the Confirmation Logic
04:29
Finishing the App
11:45
Wrap Up
01:55
Useful Resources & Links
00:12
+ More on Arrays & Iterables
29 lectures 02:04:39
Module Introduction
01:08
What are "Iterables" and "Array-like Objects"?
02:11
Creating Arrays
08:55
Which Data Can You Store In Arrays?
03:47
push(), pop(), unshift(), shift() - Adding & Removing Elements
06:59
The splice() Method
05:37
Selecting Ranges & Creating Copies with slice()
06:06
Adding Arrays to Arrays with concat()
02:23
Retrieving Indexes with indexOf() /& lastIndexOf()
03:47
Finding Stuff: find() and findIndex()
05:20
Is it Included?
01:20
Alternative to for Loops: The forEach() Method
04:24
Transforming Data with map()
02:38
sort()ing and reverse()ing
04:15
Filtering Arrays with filter()
02:35
Where Arrow Functions Shine!
01:31
The Important reduce() Method
07:33
Chaining Methods in JavaScript
00:48
Arrays & Strings - split() and join()
04:21
The Spread Operator (...)
10:31
Understanding Array Destructuring
04:24
Maps & Sets - Overview
04:16
Working with Sets
07:21
Working with Maps
09:30
Maps vs Objects
03:41
Understanding WeakSet
04:50
Understanding WeakMap
02:51
Time to practice your knowledge on arrays and iterables - with this assignment!
Time to Practice: Arrays & Iterables
1 question
Wrap Up
01:25
Useful Resources & Links
00:12
+ More on Objects
27 lectures 01:58:25
Module Introduction
01:38
What's an Object?
05:54
Objects & Primitive Values
00:41
Objects - Recap
02:42
Adding, Modifying & Deleting Properties
06:46
Special Key Names & Square Bracket Property Access
08:36
Property Types & Property Order
03:55
Dynamic Property Access & Setting Properties Dynamically
04:11

There's a lot you can do with properties as you saw by now! Let's quickly check your knowledge.

Object Properties
4 questions
Demo App & Shorthand Property Syntax
09:22
Rendering Elements based on Objects
05:36
for-in Loops & Outputting Dynamic Properties
05:24
Adding the Filter Functionality
05:38
Understanding "Chaining" (Property & Method Chaining)
01:51
The Object Spread Operator (...)
05:54
Understanding Object.assign()
02:08
Object Destructuring
06:13
Checking for Property Existance
02:42
Introducing "this"
05:52
The Method Shorthand Syntax
01:07
The "this" Keyword And Its Strange Behavior
05:41
call() and apply()
03:22
What the Browser (Sometimes) Does to "this"
02:33
"this" and Arrow Functions
10:36
"this" - Summary
01:15

"this" can be complicated. But it shouldn't be! Time to check your knowledge.

"this"
6 questions
Getters & Setters
07:05
Wrap Up
01:33
Useful Resources & Links
00:10
+ Classes & Object-oriented Programming (OOP)
26 lectures 02:15:05
Module Introduction
01:55
What is "Object-oriented Programming" (OOP)?
03:17
Getting Started with OOP Code
12:10
Defining & Using a First Class
07:17
Working with Constructor Methods
04:51
Fields vs Properties
02:19
Using & "Connecting" Multiple Classes
09:06
Binding Class Methods & Working with "this"
04:57
Adding a Cart and Shop Class
04:37
Communicating Can Be Challenging!
03:54
Static Methods & Properties
07:51
First Summary & Classes vs Object Literals
04:06
Getters & Setters
05:43
Introducing Inheritance
02:34
Implementing Inheritance
11:50
Using Inheritance Everywhere
06:51
Overriding Methods and the super() Constructor
06:00
super() Constructor Execution, Order & "this"
06:46
Different Ways of Adding Methods
05:51
Private Properties
07:24
"Pseudo-Private" Properties
00:32
Time to practice you knowledge on classes and object-oriented programming!
Time to Practice: Classes & OOP
1 question
The "instanceof" Operator
04:30
Built-in Classes
01:09
Understanding Object Descriptors
07:35

You learned a lot about classes in this module - time to check the knowledge!


Classes
5 questions
Wrap Up
01:51
Useful Resources & Links
00:09
Requirements
  • NO prior JavaScript knowledge is required
  • Basic web development knowledge is recommended
  • Basic understanding of HTML and CSS helps but is NOT required
Description

JavaScript is THE most important programming language you need to learn as a web developer - and with this course, you make sure that you will not miss a single thing you have to know as a JavaScript developer!

This is the most comprehensive and modern course you can find on JavaScript - it's based on all my JavaScript knowledge AND teaching experience. It's both a complete guide, starting with the core basics of the language, as well as an extensive reference of the JavaScript language and environment, ensuring that both newcomers as well as experienced JavaScript developers get a lot out of this course!

It's a huge course because it's packed with important knowledge and helpful content. From the core basics, over advanced concepts and JavaScript specialties, all the way up to expert topics like performance optimization and testing - this course has it all. My goal was to create your go-to resource for the JavaScript language, which you can not just use for learning it but also as a resource you can come back to and look up important topics.

The course is based on my experience as a long-term JavaScript developer as well as a teacher with more than 1,000,000 students on Udemy as well as on my YouTube channel Academind. It's packed with examples, demos, projects, assignments, quizzes and of course videos - all with the goal of giving you the best possible way of learning JavaScript.

What's in the course?

This course is obviously packed with content - I therefore strongly recommend that you check out the full course curriculum to get a clear idea of all the topics covered in the course. In general, here's what you'll find in the course:

  • Modern JavaScript from the start: The JavaScript syntax changed over time - in this course, you'll learn the latest syntax from the start (you'll also learn about the old one though, so that you can work in ANY JS project)

  • ALL the Basics: Variables, constants, functions, how scripts are loaded etc

  • Arrays & Objects: We'll explore these very important data structures in great detail

  • Control Structures: Understand how to run code conditionally and in loops

  • A look behind the Scenes: How JavaScript engines work behind the scenes and what that means for us

  • Deep dives into Core Concepts: ALL the special things about JavaScript function, different syntaxes

  • Working with the DOM: How to manipulate web pages dynamically via JavaScript (including deep dives and different use-cases)

  • Events in JavaScript: Learn how to listen to a broad variety of events (e.g. drag & drop) and execute appropriate code

  • Classes & Object-oriented Programming: Learn how to work with classes, prototypes, the "this" keyword, constructor functions and much more

  • Asynchronous and Synchronous Programming: We'll explore callbacks, promises, async/ await and other important tools and language features to execute code correctly

  • Http Requests: Learn how to send Http requests via JavaScript

  • Tooling, Optimizations & Browser Support: Code splitting, producing small code and ensuring that scripts work in all browsers  - this matters and hence is covered in great detail

  • Libraries & Frameworks: Learn about libraries like Axios or frameworks like React.js - why they matter and how to use them

  • Node.js: Whilst focusing on the browser-side for the majority of the course (because the syntax is the same), we'll also have a dedicated section on Node.js to learn all about that JS host environment

  • Security & Performance Optimizations: Of course security matters, so does performance - no surprise that both is covered in the course!

  • Automated Testing: Testing manually is hard work and can be unreliable - in this course you'll also get an introduction into automated testing

What are the course prerequisites?

  • NO JavaScript knowledge is required - you'll learn it from scratch!

  • You also need NO programming experience other than basic web development knowledge (e.g. how the web works)

  • Basic HTML and CSS knowledge is recommended but not a must-have

Who this course is for:
  • Beginner web development students who have no or only little JavaScript experience
  • Also developers who know the basics about JavaScript and want to deepen their knowledge
  • Advanced JavaScript developers who want to learn more about the nitty-gritty details and dive into advanced concepts
  • Everyone interested in learning JavaScript and all about how it works