Section 1 : Introduction

Lecture 1 What is JavaScript 00:03:45 Duration
Lecture 2 JavaScript in Action! 00:07:20 Duration
Lecture 3 How JavaScript Is Executed 00:03:15 Duration
Lecture 4 Dynamic vs Weakly Typed Languages 00:03:24 Duration
Lecture 5 JavaScript Runs In A Host Environment 00:04:41 Duration
Lecture 6 Course Outline - What Is In The Course 00:06:00 Duration
Lecture 7 How To Get The Most Out Of This Course 00:02:37 Duration
Lecture 8 JavaScript vs Java 00:04:02 Duration
Lecture 9 A Brief History Of JavaScript 00:06:03 Duration
Lecture 10 Setting Up a Development Environment 00:10:34 Duration

Section 2 : Basics Variables, Data Types, Operators & Functions

Lecture 1 Module Introduction 00:01:17 Duration
Lecture 2 Setting Up the Project 00:04:25 Duration
Lecture 3 Adding JavaScript to the Website 00:06:43 Duration
Lecture 4 Introducing Variables & Constants 00:05:17 Duration
Lecture 5 Declaring & Defining Variables 00:07:10 Duration
Lecture 6 Working with Variables & Operators 00:06:17 Duration
Lecture 7 Understanding the Starting Code 00:01:21 Duration
Lecture 8 Data Types Numbers & Strings (Text) 00:06:01 Duration
Lecture 9 Using Constants 00:05:11 Duration
Lecture 10 More on Strings 00:15:51 Duration
Lecture 11 Introducing Functions 00:05:50 Duration
Lecture 12 Adding A Custom Function 00:11:23 Duration
Lecture 13 Returning Values 00:04:31 Duration
Lecture 14 The (Un)Importance of Code Order 00:04:34 Duration
Lecture 15 An Introduction to Global & Local Scope 00:05:32 Duration
Lecture 16 More about the return Statement 00:02:24 Duration
Lecture 17 Executing Functions Indirectly 00:11:10 Duration
Lecture 18 Converting Data Types 00:06:15 Duration
Lecture 19 Splitting Code into Functions 00:05:49 Duration
Lecture 20 Connecting all Buttons to Functions 00:07:44 Duration
Lecture 21 Working with Code Comments 00:04:09 Duration
Lecture 22 More Operators! 00:06:39 Duration
Lecture 23 More Core Data Types! 00:04:31 Duration
Lecture 24 Using Arrays 00:08:53 Duration
Lecture 25 Creating Objects 00:06:02 Duration
Lecture 26 Accessing Object Data 00:02:51 Duration
Lecture 27 Adding a Re-Usable Function That Uses Objects 00:05:24 Duration
Lecture 28 undefined, null & NaN 00:06:21 Duration
Lecture 29 The typeof Operator 00:03:12 Duration
Lecture 30 Importing Scripts Correctly with defer & async 00:14:38 Duration
Lecture 31 Wrap Up 00:02:14 Duration

Section 3 : Efficient Development & Debugging

Lecture 1 Module Introduction 00:01:29 Duration
Lecture 2 Efficient Development & Debugging - An Overvie 00:03:19 Duration
Lecture 3 Configuring the IDE Look & Feel 00:02:26 Duration
Lecture 4 Using Shortcuts 00:04:12 Duration
Lecture 5 Working with Auto-Completion & IDE Hints 00:04:34 Duration
Lecture 6 Installing IDE Extensions 00:02:04 Duration
Lecture 7 Tweaking Editor Settings 00:02:15 Duration
Lecture 8 Utilizing Different IDE Views 00:01:42 Duration
Lecture 9 Finding Help & Working with MDN 00:05:53 Duration
Lecture 10 How to google Correctly 00:01:45 Duration
Lecture 11 Debugging JavaScript - An Overview 00:03:18 Duration
Lecture 12 An Error Message! No Reason To Panic! 00:04:46 Duration
Lecture 13 Using console.log() to look into the Code 00:03:49 Duration
Lecture 14 Next-Level Debugging with the Chrome Devtools 00:08:20 Duration
Lecture 15 Debugging Code directly Inside VS Code 00:04:55 Duration
Lecture 16 Wrap Up 00:01:22 Duration

Section 4 : Working with Control Structures (if Statements, Loops, Error

Lecture 1 Introducing if Statements & Boolean (Compariso 00:09:27 Duration
Lecture 2 Using if Statements 00:07:23 Duration
Lecture 3 Working with if, else and else-if 00:05:11 Duration
Lecture 4 Beware When Comparing Objects & Arrays for Equ 00:04:06 Duration
Lecture 5 The Logical AND and OR Operators 00:09:00 Duration
Lecture 6 Understanding Operator Precedence 00:07:20 Duration
Lecture 7 Beyond true false Truthy and Falsy Values 00:07:30 Duration
Lecture 8 Setting Up a Bigger Example Project (The Monst 00:03:00 Duration
Lecture 9 Adding an Attack Function 00:07:57 Duration
Lecture 10 Using if Statements for Checking the Win-Condi 00:09:17 Duration
Lecture 11 Adding More if Statements & A Strong Attack Fu 00:07:41 Duration
Lecture 12 Time for a Heal Player Functionality! 00:10:15 Duration
Lecture 13 Controlling the Conditional Bonus Life (Withou 00:06:00 Duration
Lecture 14 Adding a Reset Game Functionality 00:06:01 Duration
Lecture 15 Validating User Input 00:06:18 Duration
Lecture 16 Utilizing Global Constants as Identifiers in 00:03:21 Duration
Lecture 17 Adding a Conditional Battle Log 00:16:37 Duration
Lecture 18 Introducing the Ternary Operator 00:07:32 Duration
Lecture 19 A Bit of Theory Statements vs Expressions 00:01:41 Duration
Lecture 20 Logical Operator Tricks & Shorthands 00:12:58 Duration
Lecture 21 Working with the switch-case Statement 00:07:10 Duration
Lecture 22 Introducing Loops 00:06:40 Duration
Lecture 23 The for Loop 00:07:38 Duration
Lecture 24 The for-of Loop 00:05:17 Duration
Lecture 25 The for-in Loop 00:06:49 Duration
Lecture 26 The while & do-while Loops 00:08:00 Duration
Lecture 27 Controlling Loops with break 00:08:12 Duration
Lecture 28 Controlling Iterations with continue 00:02:21 Duration
Lecture 29 More Control with Labeled Statements 00:06:26 Duration
Lecture 30 Error Handling with try-catch - An Introducti 00:02:25 Duration
Lecture 31 Throwing Custom Errors 00:05:17 Duration
Lecture 32 Working with try-catch to Catch & Handle Erro 00:08:14 Duration
Lecture 33 Wrap Up 00:03:21 Duration

Section 5 : Behind the Scenes & The (Weird) Past (ES3, ES5) & Present (E

Lecture 1 Module Introduction 00:01:44 Duration
Lecture 2 ES5 vs ES6+ (Next Gen JS) - Evolution of Java 00:08:14 Duration
Lecture 3 var vs let & const - Introducing Block Scope 00:14:33 Duration
Lecture 4 Understanding Hoisting 00:04:07 Duration
Lecture 5 Strict Mode & Writing Good Code 00:05:47 Duration
Lecture 6 How Code is Parsed & Compiled 00:08:17 Duration
Lecture 7 Inside the JavaScript Engine - How the Code 00:15:59 Duration
Lecture 8 Primitive vs Reference Values
Lecture 9 Wrap Up 00:01:56 Duration

Section 6 : More on Functions

Lecture 1 Module Introduction 00:01:32 Duration
Lecture 2 Recapping Functions Knowledge - What We Know 00:01:52 Duration
Lecture 3 Functions vs Methods 00:05:46 Duration
Lecture 4 Functions are Objects! 00:02:47 Duration
Lecture 5 Function Expressions Storing Functions in 00:05:12 Duration
Lecture 6 Function Expressions vs Function Declarations 00:02:47 Duration
Lecture 7 Anonymous Functions 00:05:54 Duration
Lecture 8 Working on the Project Adding User Choices to 00:07:44 Duration
Lecture 9 Implementing the Core Game Logic 00:07:21 Duration
Lecture 10 Introducing Arrow Functions 00:08:41 Duration
Lecture 11 Outputting Messages to the User 00:03:54 Duration
Lecture 12 Default Arguments in Functions 00:10:45 Duration
Lecture 13 Introducing Rest Parameters (Rest Operator) 00:08:57 Duration
Lecture 14 Creating Functions Inside of Functions 00:03:05 Duration
Lecture 15 Understanding Callback Functions 00:06:09 Duration
Lecture 16 Working with bind() 00:08:40 Duration
Lecture 17 Adding bind() to the Calculator Project 00:03:47 Duration
Lecture 18 call() and apply() 00:01:18 Duration
Lecture 19 Wrap Up 00:02:10 Duration

Section 7 : Working with the DOM (Browser HTML Code) in JavaScript

Lecture 1 Module Introduction 00:01:49 Duration
Lecture 2 What's the DOM 00:06:00 Duration
Lecture 3 Document and Window Object
Lecture 4 Understanding the DOM and how it's created 00:07:07 Duration
Lecture 5 Nodes & Elements - Querying the DOM Overview 00:05:55 Duration
Lecture 6 Selecting Elements in the DOM 00:09:55 Duration
Lecture 7 Exploring and Changing DOM Properties 00:07:38 Duration
Lecture 8 Attributes vs Properties 00:08:58 Duration
Lecture 9 Selecting Multiple Elements & Summary 00:05:13 Duration
Lecture 10 Traversing the DOM - Overview 00:06:22 Duration
Lecture 11 Traversing Child Nodes 00:09:15 Duration
Lecture 12 Using parentNode & parentElement
Lecture 13 Selecting Sibling Elements 00:04:06 Duration
Lecture 14 DOM Traversal vs Query Methods 00:04:35 Duration
Lecture 15 Styling DOM Elements 00:12:19 Duration
Lecture 16 Creating Elements with JS - Overview 00:02:42 Duration
Lecture 17 Adding Elements via HTML in Code 00:07:43 Duration
Lecture 18 Adding Elements via createElement() 00:05:42 Duration
Lecture 19 Inserting DOM Elements 00:08:15 Duration
Lecture 20 Cloning DOM Nodes 00:01:45 Duration
Lecture 21 Live Node Lists vs Static Node Lists 00:04:56 Duration
Lecture 22 Removing Elements 00:01:56 Duration
Lecture 23 Insertion & Removal Method Summary 00:02:38 Duration
Lecture 24 Setting Up the Practice Project 00:02:16 Duration
Lecture 25 Selecting the Modal and Add Button 00:08:58 Duration
Lecture 26 Opening a Modal by Changing CSS Classes 00:05:01 Duration
Lecture 27 Controlling the Backdrop 00:08:04 Duration
Lecture 28 Fetching and Validating User Input 00:08:06 Duration
Lecture 29 Creating a Movie in JavaScript & Clearing the 00:04:01 Duration
Lecture 30 Rendering Movie Items on the Screen 00:08:24 Duration
Lecture 31 Deleting Movie Elements 00:09:12 Duration
Lecture 32 Showing & Hiding the Are you sure Dialog 00:07:08 Duration
Lecture 33 Starting with the Confirmation Logic 00:04:29 Duration
Lecture 34 Finishing the App 00:11:45 Duration
Lecture 35 Wrap Up 00:01:55 Duration

Section 8 : More on Arrays & Iterables

Lecture 1 Module Introduction 00:01:08 Duration
Lecture 2 What are Iterables and Array-like Objects 00:02:12 Duration
Lecture 3 Creating Arrays 00:08:56 Duration
Lecture 4 Which Data Can You Store In Arrays 00:03:48 Duration
Lecture 5 push(), pop(), unshift(), shift() - Adding & 00:06:59 Duration
Lecture 6 The splice() Method 00:05:38 Duration
Lecture 7 Selecting Ranges & Creating Copies with slice 00:06:06 Duration
Lecture 8 Adding Arrays to Arrays with concat() 00:02:23 Duration
Lecture 9 Retrieving Indexes with indexOf() & lastIndex 00:03:48 Duration
Lecture 10 Finding Stuff find() and findIndex() 00:05:20 Duration
Lecture 11 Is it Included 00:01:20 Duration
Lecture 12 Alternative to for Loops The forEach() Method 00:04:25 Duration
Lecture 13 Transforming Data with map() 00:02:39 Duration
Lecture 14 sort()ing and reverse()ing 00:04:16 Duration
Lecture 15 Filtering Arrays with filter() 00:02:35 Duration
Lecture 16 Where Arrow Functions Shine! 00:01:31 Duration
Lecture 17 The Important reduce() Method 00:07:34 Duration
Lecture 18 Arrays & Strings - split() and join() 00:04:22 Duration
Lecture 19 The Spread Operator (...) 00:10:31 Duration
Lecture 20 Understanding Array Destructuring 00:04:25 Duration
Lecture 21 Maps & Sets - Overview 00:04:17 Duration
Lecture 22 Working with Sets 00:07:21 Duration
Lecture 23 Working with Maps 00:09:31 Duration
Lecture 24 Maps vs Objects 00:03:41 Duration
Lecture 25 Understanding WeakSet 00:04:51 Duration
Lecture 26 Understanding WeakMap 00:02:51 Duration
Lecture 27 Wrap Up 00:01:26 Duration

Section 9 : More on Objects

Lecture 1 Module Introduction 00:01:38 Duration
Lecture 2 What's an Object 00:05:54 Duration
Lecture 3 Objects - Recap 00:02:43 Duration
Lecture 4 Adding, Modifying & Deleting Properties 00:06:47 Duration
Lecture 5 Special Key Names & Square Bracket Property 00:08:37 Duration
Lecture 6 Property Types & Property Order 00:03:55 Duration
Lecture 7 Dynamic Property Access & Setting Properties 00:04:11 Duration
Lecture 8 Demo App & Shorthand Property Syntax 00:09:22 Duration
Lecture 9 Rendering Elements based on Objects 00:05:37 Duration
Lecture 10 for-in Loops & Outputting Dynamic Properties 00:05:24 Duration
Lecture 11 Adding the Filter Functionality 00:05:39 Duration
Lecture 12 Understanding Chaining (Property & Method Cha 00:01:51 Duration
Lecture 13 The Object Spread Operator (...) 00:05:54 Duration
Lecture 14 Understanding Object.assign() 00:02:08 Duration
Lecture 15 Object Destructuring 00:06:14 Duration
Lecture 16 Checking for Property Existance 00:02:43 Duration
Lecture 17 Introducing this 00:05:52 Duration
Lecture 18 The Method Shorthand Syntax 00:01:07 Duration
Lecture 19 The this Keyword And Its Strange Behavior 00:05:42 Duration
Lecture 20 call() and apply() 00:03:23 Duration
Lecture 21 What the Browser (Sometimes) Does to this 00:02:33 Duration
Lecture 22 this and Arrow Functions 00:10:36 Duration
Lecture 23 Getters & Setters 00:07:06 Duration
Lecture 24 Wrap Up 00:01:34 Duration

Section 10 : Classes & Object-oriented Programming (OOP)

Lecture 1 Module Introduction 00:01:55 Duration
Lecture 2 whats-oop 00:03:17 Duration
Lecture 3 Getting Started with OOP Code 00:12:10 Duration
Lecture 4 Defining & Using a First Class 00:07:17 Duration
Lecture 5 Working with Constructor Methods 00:04:51 Duration
Lecture 6 Fields vs Properties 00:02:19 Duration
Lecture 7 Using & Connecting Multiple Classes 00:09:07 Duration
Lecture 8 Binding Class Methods & Working with this 00:04:57 Duration
Lecture 9 Adding a Cart and Shop Class 00:04:37 Duration
Lecture 10 Communicating Can Be Challenging! 00:03:54 Duration
Lecture 11 Static Methods & Properties 00:07:51 Duration
Lecture 12 First Summary & Classes vs Object Literals 00:04:06 Duration
Lecture 13 Getters & Setters 00:05:43 Duration
Lecture 14 Introducing Inheritance 00:02:35 Duration
Lecture 15 Implementing Inheritance 00:11:51 Duration
Lecture 16 Using Inheritance Everywhere 00:06:52 Duration
Lecture 17 Overriding Methods and the super() Constructo 00:06:01 Duration
Lecture 18 super() Constructor Execution, Order & this 00:06:46 Duration
Lecture 19 Different Ways of Adding Methods 00:05:52 Duration
Lecture 20 Private Properties 00:07:24 Duration
Lecture 21 The instanceof Operator 00:04:30 Duration
Lecture 22 Built-in Classes 00:01:09 Duration
Lecture 23 Understanding Object Descriptors 00:07:35 Duration
Lecture 24 Wrap Up 00:01:51 Duration

Section 11 : Deep Dive Constructor Functions & Prototypes

Lecture 1 Module Introduction 00:01:34 Duration
Lecture 2 Introducing Constructor Functions 00:04:02 Duration
Lecture 3 Constructor Functions vs Classes & Understand 00:04:18 Duration
Lecture 4 Introducing Prototypes 00:16:47 Duration
Lecture 5 Working with Prototypes 00:05:19 Duration
Lecture 6 The Prototype Chain and the Global Object 00:08:26 Duration
Lecture 7 Classes & Prototypes 00:05:24 Duration
Lecture 8 Methods in Classes & In Constructors 00:10:14 Duration
Lecture 9 Built-in Prototypes in JavaScript 00:02:12 Duration
Lecture 10 Setting & Getting Prototypes 00:10:58 Duration
Lecture 11 Wrap Up 00:02:49 Duration

Section 12 : Practice OOP & Classes

Lecture 1 Module Introduction 00:01:38 Duration
Lecture 2 First Project Steps & Planning 00:04:46 Duration
Lecture 3 Creating Project Lists & Parsing Element Data
Lecture 4 Starting with the Switch Project Logic 00:09:59 Duration
Lecture 5 Passing Method References Around 00:07:03 Duration
Lecture 6 Moving DOM Elements 00:11:50 Duration
Lecture 7 Adding a Tooltip 00:08:58 Duration
Lecture 8 Adding Inheritance 00:06:14 Duration
Lecture 9 Wrap Up 00:00:57 Duration

Section 13 : Back to the DOM & More Browser APIs

Lecture 1 Module Introduction 00:02:32 Duration
Lecture 2 Using dataset (data- Attributes) 00:06:52 Duration
Lecture 3 Getting Element Box Dimensions 00:05:54 Duration
Lecture 4 Working with Element Sizes & Positions 00:04:56 Duration
Lecture 5 The DOM & Prototypes 00:02:21 Duration
Lecture 6 Positioning the Tooltip 00:10:57 Duration
Lecture 7 Handling Scrolling 00:05:37 Duration
Lecture 8 Working with template Tags 00:05:14 Duration
Lecture 9 Loading Scripts Dynamically 00:07:35 Duration
Lecture 10 Setting Timers & Intervals 00:07:38 Duration
Lecture 11 The location and history Objects 00:03:17 Duration
Lecture 12 The navigator Object 00:04:50 Duration
Lecture 13 Working with Dates 00:03:17 Duration
Lecture 14 The Error Object & Constructor Function 00:03:22 Duration
Lecture 15 Wrap Up 00:00:43 Duration

Section 14 : Working with Events

Lecture 1 Module Introduction 00:01:32 Duration
Lecture 2 Introduction to Events in JavaScript 00:06:18 Duration
Lecture 3 Different Ways of Listening to Events 00:06:59 Duration
Lecture 4 Removing Event Listeners 00:05:14 Duration
Lecture 5 The event Object 00:05:43 Duration
Lecture 6 Supported Event Types 00:08:01 Duration
Lecture 7 Working with preventDefault 00:05:15 Duration
Lecture 8 Understanding Capturing & Bubbling Phases 00:02:03 Duration
Lecture 9 Event Propagation & stopPropagation() 00:07:39 Duration
Lecture 10 Using Event Delegation 00:08:33 Duration
Lecture 11 Triggering DOM Elements Programmatically 00:03:41 Duration
Lecture 12 Event Handler Functions & this 00:02:29 Duration
Lecture 13 Drag & Drop - Theory 00:04:59 Duration
Lecture 14 Configuring Draggable Elements 00:06:24 Duration
Lecture 15 Marking the Drop Area 00:08:53 Duration
Lecture 16 Dropping & Moving Data + Elements 00:06:59 Duration
Lecture 17 Wrap Up 00:01:15 Duration

Section 15 : Advanced Function Concepts

Lecture 1 Module Introduction 00:00:57 Duration
Lecture 2 Pure Functions & Side-Effects 00:06:13 Duration
Lecture 3 Impure vs Pure Functions 00:02:00 Duration
Lecture 4 Factory Functions 00:05:42 Duration
Lecture 5 Closures 00:07:46 Duration
Lecture 6 Closures in Practice 00:07:01 Duration
Lecture 7 Closures & Memory Management 00:01:24 Duration
Lecture 8 Introducing Recursion 00:07:32 Duration
Lecture 9 Advanced Recursion 00:09:01 Duration
Lecture 10 Wrap Up 00:01:14 Duration

Section 16 : More on Numbers & Strings

Lecture 1 Module Introduction 00:00:54 Duration
Lecture 2 How Numbers Work & Behave in JavaScript 00:07:47 Duration
Lecture 3 Floating Point (Im)Precision 00:11:04 Duration
Lecture 4 The BigInt Type 00:03:36 Duration
Lecture 5 The Global Number and Math Objects 00:02:47 Duration
Lecture 6 Example Generate Random Number Between Min 00:05:33 Duration
Lecture 7 Exploring String Methods 00:01:43 Duration
Lecture 8 Tagged Templates 00:10:29 Duration
Lecture 9 Introducing Regular Expressions (RegEx) 00:04:31 Duration
Lecture 10 More on Regular Expressions 00:07:25 Duration
Lecture 11 Wrap Up 00:01:20 Duration

Section 17 : Async JavaScript Promises & Callbacks

Lecture 1 Module Introduction 00:01:12 Duration
Lecture 2 Understanding Synchronous Code Execution (Syn 00:02:51 Duration
Lecture 3 Understanding Asynchronous Code Execution (As 00:05:45 Duration
Lecture 4 Blocking Code & The Event Loop 00:10:30 Duration
Lecture 5 Sync + Async Code - The Execution Order 00:04:03 Duration
Lecture 6 Multiple Callbacks & setTimeout(0) 00:03:20 Duration
Lecture 7 Getting Started with Promises 00:08:25 Duration
Lecture 8 Chaining Multiple Promises 00:05:53 Duration
Lecture 9 Promise Error Handling 00:07:46 Duration
Lecture 10 Async await 00:09:11 Duration
Lecture 11 Async await & Error Handling 00:03:07 Duration
Lecture 12 Async await vs Raw Promises 00:04:56 Duration
Lecture 13 Promise.all(), Promise.race() etc. 00:07:59 Duration
Lecture 14 Wrap Up 00:01:27 Duration

Section 18 : Working with Http Requests

Lecture 1 Module Introduction 00:01:07 Duration
Lecture 2 What & Why 00:05:03 Duration
Lecture 3 More Background about Http 00:05:24 Duration
Lecture 4 Getting Started with Http 00:03:35 Duration
Lecture 5 Sending a GET Request 00:03:46 Duration
Lecture 6 JSON Data & Parsing Data 00:09:14 Duration
Lecture 7 Promisifying Http Requests (with XMLHttpReque 00:03:49 Duration
Lecture 8 Sending Data with a POST Request 00:04:55 Duration
Lecture 9 Triggering Requests via the UI 00:03:13 Duration
Lecture 10 Sending a DELETE Request 00:04:57 Duration
Lecture 11 Handling Errors 00:05:03 Duration
Lecture 12 Using the fetch() API 00:07:11 Duration
Lecture 13 POSTing Data with the fetch() API 00:02:38 Duration
Lecture 14 Adding Request Headers 00:03:01 Duration
Lecture 15 fetch() & Error Handling 00:07:12 Duration
Lecture 16 XMLHttpRequest vs fetch() 00:01:42 Duration
Lecture 17 Working with FormData 00:06:58 Duration
Lecture 18 Wrap Up 00:01:18 Duration

Section 19 : Working with JavaScript Libraries

Lecture 1 Module Introduction 00:00:59 Duration
Lecture 2 What & Why 00:02:55 Duration
Lecture 3 Adding Libraries (Example lodash) 00:09:10 Duration
Lecture 4 Example jQuery 00:02:30 Duration
Lecture 5 Discovering Libraries 00:03:26 Duration
Lecture 6 Axios Library & Http Requests 00:10:46 Duration
Lecture 7 Third-Party Library Considerations 00:04:55 Duration
Lecture 8 Wrap Up 00:00:59 Duration

Section 20 : Modular JavaScript (Working with Modules)

Lecture 1 Module Introduction 00:00:56 Duration
Lecture 2 Splitting Code in a Sub-optimal Way 00:07:12 Duration
Lecture 3 A First Step Towards JavaScript Modules 00:03:25 Duration
Lecture 4 We Need a Development Server! 00:05:58 Duration
Lecture 5 First import export Work 00:03:41 Duration
Lecture 6 Switching All Files To Use Modules 00:04:26 Duration
Lecture 7 More Named Export Syntax Variations 00:06:12 Duration
Lecture 8 Working With Default Exports 00:03:36 Duration
Lecture 9 Dynamic Imports & Code Splitting 00:05:24 Duration
Lecture 10 When Does Module Code Execute 00:02:06 Duration
Lecture 11 Module Scope & globalThis 00:06:18 Duration
Lecture 12 Wrap Up 00:01:38 Duration

Section 21 : JavaScript Tooling & Workflows

Lecture 1 Module Introduction 00:03:24 Duration
Lecture 2 Project Limitations & Why We Need Tools 00:08:12 Duration
Lecture 3 Workflow Overview 00:02:42 Duration
Lecture 4 Setting Up a npm Project 00:03:46 Duration
Lecture 5 Working with npm Packages 00:03:39 Duration
Lecture 6 Linting with ESLint 00:08:38 Duration
Lecture 7 Bundling with Webpack 00:15:14 Duration
Lecture 8 Development Mode & Fixing Lazy Loading 00:04:00 Duration
Lecture 9 Using webpack-dev-server 00:03:15 Duration
Lecture 10 Generating Sourcemaps 00:03:05 Duration
Lecture 11 Building For Production 00:03:45 Duration
Lecture 12 Final Optimizations 00:06:35 Duration
Lecture 13 Using Third Party Packages with npm & Webpack 00:04:06 Duration
Lecture 14 Wrap Up 00:01:40 Duration

Section 22 : Utilizing Browser Storage

Lecture 1 Module Introduction 00:01:06 Duration
Lecture 2 Browser Storage Options 00:07:22 Duration
Lecture 3 localStorage & sessionStorage 00:10:43 Duration
Lecture 4 Getting Started with Cookies 00:06:07 Duration
Lecture 5 Working with Cookies 00:08:10 Duration
Lecture 6 Getting Started with IndexedDB 00:08:55 Duration
Lecture 7 Working with IndexedDB 00:04:06 Duration
Lecture 8 Wrap Up 00:00:48 Duration

Section 23 : JavaScript & Browser Support

Lecture 1 Module Introduction 00:01:29 Duration
Lecture 2 What Is Browser Support About 00:07:36 Duration
Lecture 3 Determining Browser Support For A JavaScript 00:08:20 Duration
Lecture 4 Determining Required Support 00:03:29 Duration
Lecture 5 Solution Feature Detection + Fallback Code 00:09:55 Duration
Lecture 6 Solution Using Polyfills 00:03:18 Duration
Lecture 7 Solution Transpiling Code 00:12:02 Duration
Lecture 8 Improvement Automatically Detect + Add 00:11:02 Duration
Lecture 9 What about Support Outside of Browsers 00:00:58 Duration
Lecture 10 Browser Support Outside of JavaScript Files 00:02:36 Duration
Lecture 11 Wrap Up 00:01:19 Duration

Section 24 : Time to Practice Share My Place App

Lecture 1 Module Introduction 00:00:53 Duration
Lecture 2 Setting Up the Project 00:03:06 Duration
Lecture 3 Getting DOM Access 00:04:33 Duration
Lecture 4 Getting the User Location 00:06:27 Duration
Lecture 5 Adding Feedback (Showing a Modal) 00:11:16 Duration
Lecture 6 Hiding the Modal 00:02:38 Duration
Lecture 7 Rendering a Map with Google Maps 00:14:17 Duration
Lecture 8 Finding an Address & Getting the Coordinates 00:08:23 Duration
Lecture 9 Converting User Input to Coordinates 00:03:35 Duration
Lecture 10 Creating a Share Place Link 00:08:31 Duration
Lecture 11 Copying the Link to the Clipboard 00:03:37 Duration
Lecture 12 Rendering the Shared Place Screen 00:06:23 Duration

Section 25 : Working with JavaScript Frameworks

Lecture 1 Module Introduction 00:01:06 Duration
Lecture 2 What and Why 00:07:35 Duration
Lecture 3 The Idea Behind React.js 00:02:46 Duration
Lecture 4 Analysing a React Project 00:17:38 Duration
Lecture 5 Wrap Up 00:01:35 Duration

Section 26 : Meta-Programming Symbols, Iterators, Generators, Reflect API

Lecture 1 Module Introduction 00:01:52 Duration
Lecture 2 Understanding Symbols 00:08:27 Duration
Lecture 3 Well-known Symbols 00:05:15 Duration
Lecture 4 Understanding Iterators 00:05:32 Duration
Lecture 5 Generators & Iterable Objects 00:11:03 Duration
Lecture 6 Generators Summary & Built-in Iterables Examp 00:03:22 Duration
Lecture 7 The Reflect API 00:07:11 Duration
Lecture 8 The Proxy API and a First Trap 00:09:04 Duration
Lecture 9 Working with Proxy Traps 00:02:57 Duration
Lecture 10 Wrap Up 00:01:38 Duration

Section 27 : Node.js An Introduction

Lecture 1 Module Introduction 00:01:43 Duration
Lecture 2 JavaScript is a Hosted Language 00:02:22 Duration
Lecture 3 Installation & Basics 00:06:17 Duration
Lecture 4 Understanding Modules & File Access 00:04:39 Duration
Lecture 5 Working with Incoming Http Requests 00:05:46 Duration
Lecture 6 Sending Responses (HTML Data) 00:04:01 Duration
Lecture 7 Parsing Incoming Data 00:10:53 Duration
Lecture 8 Express.js The Basics 00:06:34 Duration
Lecture 9 Extracting Data 00:04:24 Duration
Lecture 10 Rendering Server-side HTML with Templates & 00:06:52 Duration
Lecture 11 Enhancing Our Project 00:03:44 Duration
Lecture 12 Adding Basic REST Routes 00:12:09 Duration
Lecture 13 Understanding CORS (Cross Origin Resource Sha 00:05:13 Duration
Lecture 14 Sending the Location ID to the Frontend 00:02:16 Duration
Lecture 15 Adding the GET Location Route 00:07:16 Duration
Lecture 16 Introducing MongoDB (Database) 00:14:45 Duration
Lecture 17 Wrap Up 00:01:51 Duration

Section 28 : Security

Lecture 1 Module Introduction 00:01:36 Duration
Lecture 2 Security Hole Overview & Exposing Data in you 00:06:46 Duration
Lecture 3 Cross-Site Scripting Attacks (XSS) 00:14:39 Duration
Lecture 4 Third-Party Libraries & XSS 00:05:18 Duration
Lecture 5 CSRF Attacks (Cross Site Request Forgery) 00:04:16 Duration
Lecture 6 CORS (Cross Origin Resource Sharing) 00:02:53 Duration
Lecture 7 Wrap Up 00:01:31 Duration

Section 29 : Deploying JavaScript Code

Lecture 1 Module Introduction 00:01:11 Duration
Lecture 2 Deployment Steps 00:07:29 Duration
Lecture 3 Example Static Host Deployment (no Server-sid 00:09:44 Duration
Lecture 4 Example Dynamic Page Deployment (with Server 00:12:46 Duration

Section 30 : Performance & Optimizations

Lecture 1 Module Introduction 00:01:49 Duration
Lecture 2 What is Performance Optimization About 00:06:17 Duration
Lecture 3 Optimization Potentials 00:06:49 Duration
Lecture 4 Measuring Performance 00:03:42 Duration
Lecture 5 Diving Into The Browser Devtools (for Perform 00:15:30 Duration
Lecture 6 Further Resources 00:02:14 Duration
Lecture 7 Preparing The Testing Setup 00:04:04 Duration
Lecture 8 Optimizing Startup Time & Code Usage Coverag 00:11:51 Duration
Lecture 9 Updating The DOM Correctly 00:09:56 Duration
Lecture 10 Updating Lists Correctly 00:08:11 Duration
Lecture 11 Optimizing The Small Things 00:03:58 Duration
Lecture 12 Micro-Optimizations (Think Twice!) 00:08:49 Duration
Lecture 13 Finding & Fixing Memory Leaks 00:09:44 Duration
Lecture 14 Wrap Up 00:03:26 Duration

Section 31 : Introduction to Testing

Lecture 1 Module Introduction 00:00:50 Duration
Lecture 2 What Is Testing Why Does It Matter 00:07:10 Duration
Lecture 3 Testing Setup 00:04:10 Duration
Lecture 4 Writing & Running Unit Tests 00:11:15 Duration
Lecture 5 Writing & Running Integration Tests 00:06:04 Duration
Lecture 6 Writing & Running e2e Tests 00:10:16 Duration
Lecture 7 Dealing with Async Code 00:10:20 Duration
Lecture 8 Working with Mocks 00:07:51 Duration

Section 32 : Bonus Programming Paradigms (Procedural vs Object Oriented v

Lecture 1 Module Introduction 00:00:48 Duration
Lecture 2 What are Programming Paradigms
Lecture 3 Procedural Programming in Practice 00:08:53 Duration
Lecture 4 Object Oriented Programming in Practice 00:13:20 Duration
Lecture 5 Functional Programming in Practice 00:13:53 Duration
Lecture 6 Wrap Up 00:03:27 Duration

Section 33 : Bonus Data Structures & Algorithms Introduction

Lecture 1 Module Introduction 00:02:03 Duration
Lecture 2 What are Data Structures & Algorithms 00:04:23 Duration
Lecture 3 A First Example 00:10:23 Duration
Lecture 4 Solving the Same Problem Differently 00:07:26 Duration
Lecture 5 Performance & The Big O Notation 00:11:44 Duration
Lecture 6 More Time Complexities & Comparing Algorithms 00:03:36 Duration
Lecture 7 More on Big O 00:05:23 Duration
Lecture 8 More Examples 00:10:15 Duration
Lecture 9 Diving into Data Structures & Time Complexiti 00:12:07 Duration
Lecture 10 Where to Learn More & Wrap Up 00:03:23 Duration

Section 34 : Bonus TypeScript Introduction

Lecture 1 Module Introduction 00:01:11 Duration
Lecture 2 What is TypeScript and Why would you use it 00:04:58 Duration
Lecture 3 Working with Types 00:10:06 Duration
Lecture 4 Core Types & Diving Deeper 00:17:26 Duration
Lecture 5 Object Types, Array Types & Function Types 00:09:22 Duration
Lecture 6 Advanced Types (Literal Types, Union Types, 00:09:20 Duration
Lecture 7 Classes & Interfaces 00:12:02 Duration
Lecture 8 Generic Types 00:05:03 Duration
Lecture 9 Configuring the TypeScript Compiler 00:05:12 Duration

Section 35 : Bonus Web Components

Lecture 1 Module Introduction 00:02:02 Duration
Lecture 2 Web Components in Action 00:06:30 Duration
Lecture 3 What are Web Components 00:03:22 Duration
Lecture 4 Why Web Components 00:02:44 Duration
Lecture 5 Getting Started! 00:04:56 Duration
Lecture 6 Web Component Browser Support 00:02:44 Duration
Lecture 7 Our Development Setup 00:03:54 Duration
Lecture 8 A First Custom Element 00:08:18 Duration
Lecture 9 Interacting with the Surrounding DOM 00:05:04 Duration
Lecture 10 Understanding the Custom Element Lifecycle 00:02:51 Duration
Lecture 11 Using connectedCallback for DOM Access 00:02:05 Duration
Lecture 12 Listening to Events Inside the Component 00:09:13 Duration
Lecture 13 Using Attributes on Custom Elements 00:04:45 Duration
Lecture 14 Styling our Elements 00:04:08 Duration
Lecture 15 Working with the Shadow DOM 00:05:00 Duration
Lecture 16 Adding an HTML Template 00:05:41 Duration
Lecture 17 Using Slots 00:01:50 Duration
Lecture 18 Defining the Template in JavaScript 00:03:21 Duration
Lecture 19 Using Style Tags in the Shadow DOM 00:02:40 Duration
Lecture 20 Extending Built-in Elements 00:07:33 Duration
Lecture 21 The Next Steps 00:00:50 Duration
Lecture 22 Understanding Shadow DOM Projection 00:02:27 Duration
Lecture 23 Styling slot Content Outside of the Shadow DO 00:03:45 Duration
Lecture 24 Styling slot Content Inside of the Shadow DOM 00:03:10 Duration
Lecture 25 Styling the Host Component 00:04:43 Duration
Lecture 26 Conditional Host Styling 00:02:49 Duration
Lecture 27 Styling with the Host Content in Mind 00:02:28 Duration
Lecture 28 Smart Dynamic Styling with CSS Variables 00:06:21 Duration
Lecture 29 Cleaning Up the Overall Styling 00:03:22 Duration
Lecture 30 Observing Attribute Changes 00:06:18 Duration
Lecture 31 Adjusting the Component Behavior Upon Attribu 00:02:35 Duration
Lecture 32 Using disconnectedCallback 00:06:10 Duration
Lecture 33 Adding a render() Method 00:06:13 Duration
Lecture 34 The Next Steps 00:00:52 Duration
Lecture 35 Creating the Basic Modal Component 00:06:33 Duration
Lecture 36 Adding the Modal Container 00:02:30 Duration
Lecture 37 Styling the Modal Elements 00:05:36 Duration
Lecture 38 Adding Some General App Logic 00:03:49 Duration
Lecture 39 Opening the Modal via CSS 00:05:23 Duration
Lecture 40 Public Methods & Properties 00:06:38 Duration
Lecture 41 Understanding Named Slots 00:05:45 Duration
Lecture 42 Listening to Slot Content Changes 00:05:11 Duration
Lecture 43 Closing the Modal 00:06:58 Duration
Lecture 44 Dispatching Custom Events 00:03:41 Duration
Lecture 45 Configuring Custom Events 00:04:53 Duration
Lecture 46 Finishing it up! 00:04:51 Duration