The JavaScript Bible - JavaScript Bootcamp
Understand and learn JavaScript and ES6 in a one challenge-based JavaScript Bootcamp course!
Understand and learn JavaScript and ES6 in a one challenge-based JavaScript Bootcamp course!
This course covers everything you need to know about JavaScript and become either Frontend Web developer, or Full-stack Web Developer, or Backend developer.
This course includes more than 70 CHALLENGES and all exercise files are available in Git repositories.
We will start from the very beginning and you will learn fundamentals and basic concepts of JavaScript.
Than you will learn new features included in ES6, ES7 etc.
Also we will dive into the Node.js - environment for JavaScript code execution and you will understand what is the difference between Web Browser and Node.js.
In separate sections we will discuss Babel, NPM, Webpack and MongoDB.
Also you will learn most popular JavaScript framework - React.
JavaScript Bible was designed for developers with different levels of JavaScript knowledge.
If you are BEGINNER in JavaScript - start with very first section called JavaScript Basics.
In case you have SOME experience with JavaScript - jump directly in the sections where I cover ES6 topics such as rest/spread parameters, arrow functions, ES6 Classes etc.
If you are experienced MIDDLE or SENIOR developer with years of JavaScript development background - jump directly into the Challenges and test your knowledge. Each challenge has task and solution in separate Git branches.
All videos have different labels:
LECTURE: in those videos I explain different features and concepts of the language. Main main goal in those videos is to teach you HOW specific feature work under the hood. I don't teach HOW TO USE feature.
Instead I teach you WHY and HOW specific feature works.
PRACTICE: here I will dive into the coding and show you different real-world examples of the usage of specific feature. Usually I will present to you several examples for each specific feature. I strongly recommend you to follow me in those videos and code along with me.
CHALLENGE: each challenge (except simple and short challenges) has START and FINISH branches with task and solution. PLEASE don't skip challenges even if you are already familiar with the topic. Try to solve each challenge yourself.
DEMO: in some videos I will demonstrate you examples where you don't necessarily need to follow me and code along with me
If you want to become an Expert in JavaScript, please join this course now!
See you onboard!
Khu vực Câu hỏi thường gặp trống
INTRO - Exercise Files and Software Setup
Xem trướcLECTURE - Software Setup Overview
PRACTICE - WINDOWS ONLY - Install "cmder"
PRACTICE - Visual Studio Code Setup
PRACTICE - Launch Node.js and execute test JavaScript file
Xem trướcPRACTICE - Git Overview - PART 1
PRACTICE - Git Overview - PART 2
Xem trướcPRACTICE - Clone remote GIt repository and switch Branches
PRACTICE - Use SourceTree for Git repositories management
INTRO - JAVASCRIPT BASICS - Intro
GIT REPOSITORY FOR THIS SECTION
PRACTICE - Exploring Web Sites in the Browser
PRACTICE - Create first HTML file and start Live Server
Xem trướcPRACTICE - Add favicon to the HTML file
PRACTICE - JavaScript embedded into the HTML
DEMO - Git branches management
PRACTICE - JavaScript in the separate file
CHALLENGE - External Scripts
✓ CHALLENGE - External Scripts - SOLUTION
PRACTICE - JavaScript in the Console of the Browser
INTRO - JAVASCRIPT BASICS - Types and Variables
LECTURE - Object in JavaScript
LECTURE - Primitive vs Reference Value Types
PRACTICE - Exploring Primitive Value Types
PRACTICE - Exploring Reference Type - Object
LECTURE - Variable declaration using "var", "let" and "const"
PRACTICE - Variable declaration and assignment
CHALLENGE - Variable Declaration and Assignment
CHALLENGE - Variables Reusage
LECTURE - Statically vs Dynamically typed Languages
PRACTICE - Dynamic typing in JavaScript
INTRO - JAVASCRIPT BASICS - Objects
LECTURE - Variety of Objects in JavaScript
LECTURE - Objects Modification
PRACTICE and CHALLENGES - Objects - PART 1
PRACTICE and CHALLENGES - Objects - PART 2
PRACTICE and CHALLENGES - Objects - PART 3
LECTURE - Global Objects - "window" and "global"
LECTURE - Methods of the Object
INTRO - JAVASCRIPT BASICS - Functions
LECTURE - Introduction to the Functions
LECTURE - Syntax of the Function
PRACTICE - Functions - PART 1
PRACTICE - Functions - PART 2
CHALLENGES - Functions - PART 1
CHALLENGES - Functions - PART 2
LECTURE - Function Expressions vs Function Declarations
PRACTICE - Function Expressions, setTimout(), setInterval()
CHALLENGE - Function Expressions
✓ CHALLENGE - Function Expressions - SOLUTION
INTRO - JAVASCRIPT BASICS - Operators
LECTURE - Operators
LECTURE - Operands, Unary vs Binary Operators and Notations
PRACTICE - Arithmetic Operators - PART 1
PRACTICE - Arithmetic Operators - PART 2
PRACTICE - Comparison Operators - PART 1
PRACTICE - Comparison Operators - PART 2
PRACTICE - Logical Operators - PART 1
PRACTICE - Logical Operators - PART 2
PRACTICE - Operators Precedence and Associativity
CHALLENGES - Operators - PART 1
CHALLENGES - Operators - PART 2
LECTURE - Introduction to the Loops
LECTURE - "for" Loop
LECTURE - "while" Loop
LECTURE - "do while" Loop
LECTURE - "for in" and "for of" Loops
PRACTICE Loops - PART 1
PRACTICE Loops - PART 2
PRACTICE Loops - Looking for loops in a pubic JavaScript library
LECTURE - Conditional Statements - if, if else and switch
LECTURE - Ternary Operator
PRACTICE - Conditional statements and ternary operator - PART 1
PRACTICE - Conditional statements and ternary operator - PART 2
CHALLENGES - Loops and Conditions - PART 1
CHALLENGES - Loops and Conditions - PART 2
CHALLENGES - Loops and Conditions - PART 3
CHALLENGES - "for in" and Ternary Operator
PRACTICE - Mutable vs Immutable Values
PRACTICE - "typeof" and "instanceof" Operators
PRACTICE - "new Array", "new String"
PRACTICE - "new Object", "new Function"
PRACTICE - Execution contexts and Execution contexts stack
PRACTICE - "this"
PRACTICE - "call", "apply" methods of the Function
PRACTICE - "bind" method of the Function
PRACTICE - "pass by value" vs "pass by reference"
PRACTICE - IIFE - Immediately Invoked Function Expression
PRACTICE - Synchronous Code Execution
PRACTICE - Events and Events queue
PRACTICE - Callbacks - PART 1
PRACTICE - Callbacks - PART 2
PRACTICE - Closures
GIT REPOSITORY FOR THIS SECTION
LECTURE - Recap of the "var"
LECTURE - Scopes - Global, Function and Block
LECTURE - let
LECTURE - const
LECTURE - Variables Usage Guidelines
LECTURE - Var, Let or Const?
CHALLENGE 1-1 - let, var and const
✓ CHALLENGE 1-1 - let, var and const - SOLUTION
CHALLENGE 1-2 - let, var and closures
✓ CHALLENGE 1-2 - let, var and closures - SOLUTION
LECTURE - JavaScript Engine Phases
LECTURE - Variable Lifecycle Phases
LECTURE - Var lifecycle
LECTURE - Undeclared variable lifecycle
LECTURE - Let lifecycle
LECTURE - Const lifecycle
LECTURE - Function lifecycle - Part 1
LECTURE - Function lifecycle - Part 2
LECTURE - What is finally hoisting?
DEMO - Putting different variables lifecycles together
✓ DEMO - Putting different variables lifecycles together - SOLUTION, Part 1
✓ DEMO - Putting different variables lifecycles together - SOLUTION, Part 2
CHALLENGE 1-3 - Variable Lifecycles
✓ CHALLENGE 1-3 - Variable Lifecycles - SOLUTION
LECTURE - Variables Phases Section Summary
GIT REPOSITORY FOR THIS SECTION
LECTURE - Introduction to the Arrow Functions Section
LECTURE - Traditional JavaScript Functions Overview.
LECTURE - Introduction to the Arrow Functions
LECTURE - Arrow Functions syntax
PRACTICE - Arrow Functions
LECTURE - Arrow Functions and "this".
LECTURE - Regular functions instead of Arrow Functions
CHALLENGE 2-1 - Regular vs Arrow Functions
✓ CHALLENGE 2-1 - Regular vs Arrow Functions - SOLUTION
LECTURE - Arguments in the Functions
LECTURE - Arrow Functions Summary
GIT REPOSITORY FOR THIS SECTION
LECTURE - forEach() Overview
PRACTICE - forEach()
CHALLENGE 3-1 - forEach() with Index
✓ CHALLENGE 3-1 - forEach() with Index - SOLUTION
LECTURE - map() Overview
PRACTICE - map()
CHALLENGE 3-2 - map() JSON to Object
✓ CHALLENGE 3-2 - map() JSON to Object - SOLUTION
LECTURE - filter() Overview
PRACTICE - filter()
LECTURE - find() Overview
PRACTICE - find()
CHALLENGE 3-3 - find() Single Post
✓ CHALLENGE 3-3 - find() Single Post - SOLUTION
LECTURE - every() and some() Overview
PRACTICE - every() and some()
CHALLENGE 3-4 Is Array of Numbers Sorted?
✓ CHALLENGE 3-4 Is Array of Numbers Sorted? - SOLUTION
CHALLENGE 3-5 Are Arrays Equal or not?
✓ CHALLENGE 3-5 Are Arrays Equal or not? - SOLUTION
CHALLENGE 3-6 Check if Element is in Array
✓ CHALLENGE 3-6 Check if Element is in Array - SOLUTION
LECTURE - includes() Overview
PRACTICE - includes()
CHALLENGE 3-7 Includes() with Array or Object
✓ CHALLENGE 3-7 Includes() with Array or Object - SOLUTION
CHALLENGE 3-8 Push Element to Array if Not Exists
✓ CHALLENGE 3-8 Push Element to Array if Not Exists - SOLUTION
LECTURE - reduce() Overview
PRACTICE - reduce()
CHALLENGE 3-9 Reduce Array of Objects
✓ CHALLENGE 3-9 Reduce Array of Objects - SOLUTION
CHALLENGE 3-10 Reduce Array of Objects to Object
✓ CHALLENGE 3-10 Reduce Array of Objects to Object - SOLUTION
LECTURE - Do you know how sort() works?
LECTURE - Sorting Algorithms Overview
LECTURE - Stable vs Unstable Sort
LECTURE - sort() Overview
LECTURE - sort() without Arguments
LECTURE - sort() Analyze sorting algorithms
LECTURE - sort() Algorithms in different browsers
CHALLENGE 3-11 sort() Array of objects
✓ CHALLENGE 3-11 sort() Array of objects - SOLUTION
CHALLENGE 3-12 sort() Long Array of objects
✓ CHALLENGE 3-12 sort() Long Array of objects - SOLUTION
LECTURE - sort() Summary
LECTURE - Array helper methods Summary
GIT REPOSITORY FOR THIS SECTION
LECTURE - Rest Parameters Overview
PRACTICE - Rest Parameters
LECTURE - Spread Operator Overview
PRACTICE - Spread Operator
CHALLENGE 5-1 Rest and Spread Operators
✓ CHALLENGE 5-1 Rest and Spread Operators - SOLUTION
LECTURE - Default Function Parameters Overview
PRACTICE - Default Function Parameters
CHALLENGE 5-2 Default value without default parameters
✓ CHALLENGE 5-2 Default value without default parameters - SOLUTION
CHALLENGE 5-3 Generate Missing Unique IDs
✓ CHALLENGE 5-3 Generate Missing Unique IDs - SOLUTION PART 1
✓ CHALLENGE 5-3 Generate Missing Unique IDs - SOLUTION PART 2
✓ CHALLENGE 5-3 Generate Missing Unique IDs - SOLUTION PART 3
✓ CHALLENGE 5-3 Generate Missing Unique IDs - SOLUTION PART 4
GIT REPOSITORY FOR THIS SECTION
LECTURE - Destructuring Overview
PRACTICE - Array Destructuring
CHALLENGE 6-2 Array Destructuring
✓ CHALLENGE 6-2 Array Destructuring - SOLUTION
CHALLENGE 6-3 Destructure Result of the Function
✓ CHALLENGE 6-3 Destructure Result of the Function - SOLUTION
PRACTICE - Object Destructuring - PART 1
LECTURE - New Variable Names and Default Values in Object Destructuring
PRACTICE - Object Destructuring - PART 2
CHALLENGE 6-4 Object Destructuring
✓ CHALLENGE 6-4 Object Destructuring - SOLUTION
CHALLENGE 6-5 Object Destructuring and Array Helper Methods
✓ CHALLENGE 6-5 Object Destructuring and Array Helper Methods - SOLUTION
CHALLENGE 6-6 Delete Object Properties
✓ CHALLENGE 6-6 Delete Object Properties - SOLUTION
GIT REPOSITORY FOR THIS SECTION
LECTURE - Class-based vs Prototype-based
LECTURE - What is inheritance?
LECTURE - Prototype Chain
LECTURE - __proto__ and [[Prototype]]
LECTURE - What is Prototype?
LECTURE - Don't reassign __proto__
LECTURE - Native Prototypes - PART 1
LECTURE - Native Prototypes - PART 2
LECTURE - Prototypal Inheritance in JavaScript
PRACTICE - Function Constructors - PART 1
LECTURE - Function Constructors Overview
PRACTICE - Function Constructors - PART 2
PRACTICE - Function Constructors - PART 3
LECTURE - Object.create() Overview
PRACTICE - Object.create()
PRACTICE - Function Constructors - PART 4
LECTURE - Function Constructors - New Prototype in the Chain
CHALLENGE 7-1 Insert Prototype Into the Existing Prototype Chain
✓ CHALLENGE 7-1 Insert Prototype Into the Existing Prototype Chain - SOLUTION
LECTURE - "instanceof" and "typeof" in the Prototype Chain
CHALLENGE 7-2 Fix Mistakes in the Function Constructors
✓ CHALLENGE 7-2 Fix Mistakes in the Function Constructors - SOLUTION
LECTURE - Classes - Overview
LECTURE - Classes vs Function Constructors
PRACTICE - Classes - PART 1
PRACTICE - Classes - PART 2
PRACTICE - Classes - PART 3
CHALLENGE 7-3 Convert Function Constructors to Classes
✓ CHALLENGE 7-3 Convert Function Constructors to Classes - SOLUTION
CHALLENGE 7-4 Extend Array
✓ CHALLENGE 7-4 Extend Array - SOLUTION
CHALLENGE 7-5 Custom Push Method for Arrays
✓ CHALLENGE 7-5 Custom Push Method for Arrays - SOLUTION
LECTURE - React and ES6 Classes
CHALLENGE 7-6 Classes in React - Additional Button
✓ CHALLENGE 7-6 Classes in React - Additional Button - SOLUTION
Babel Module Introduction
LECTURE - What is Compiler?
LECTURE - Compiled vs Interpreted languages
LECTURE - Transpiler
LECTURE - Transpling vs Compiling
LECTURE - ES5, ES6 and JavaScript
LECTURE - What Babel does?
LECTURE - Why do we need Babel?
LECTURE - ES6 support by Browsers
LECTURE - How many browsers need compiled ES5 code?
PRACTICE - Babel in action - ES6 Rest operator
PRACTICE - Compare performance - ES6 Rest Operator(Node.js)
PRACTICE - Compare Performance - ES6 Rest Operator (Google Chrome)
CHALLENGE - Compare Performance - ES6 Destructuring
✓ CHALLENGE - Compare Performance - ES6 Destructurng - SOLUTION
LECTURE - What is User Agent?
LECTURE - Serve different JS files to different browers
LECTURE - Different JS files on the server
PRACTICE - Browser detection on the client
CHALLENGE - Detect feature support in the Browser
✓ CHALLENGE - Detect feature support in the Browser - SOLUTION
CHALLENGE - Insert different script tags into the DOM
✓ CHALLENGE - Insert different script tags into the DOM - SOLUTION
LECTURE - How Babel Works?
PRACTICE - Online Babel Compiler
LECTURE - Install Babel Globally
PRACTICE - Compile JS file using Babel
LECTURE - Plugins and Presets
LECTURE - Introduction to the NPM
PRACTICE - Exploring NPM packages
LECTURE - Package.json and init
LECTURE - Semantic Versioning
LECTURE - Packages Installation
PRACTICE - Install package in the project
CHALLENGE - Install Semver package
✓ CHALLENGE - Install Semver Package - SOLUTION
PRACTICE - Install Browserslist - package with own dependencies
LECTURE - Dependencies and Development Dependencies
PRACTICE - Examine Development Dependencies
PRACTICE - Browser App vs Server Package
CHALLENGE - Clock Browser Application
✓ CHALLENGE - Clock Browser Application - SOLUTION
LECTURE - Clock Challenge Summary
LECTURE - Browser App vs Public Package
PRACTICE - Exploring Package Information and Versions
PRACTICE - Installing Specific Package Version
LECTURE - Why package-lock.json file is needed?
CHALLENGE - Reinstall old package version without lock file
✓ CHALLENGE - Reinstall old package version without lock file - SOLUTION
LECTURE - How lock file is handled
LECTURE - Lock file summary
LECTURE - Update NPM packages overview
CHALLENGE - Update project dependencies
✓ CHALLENGE - Update project dependencies - SOLUTION
LECTURE - Introduction to the NPM scripts
PRACTICE - Start npm script
CHALLENGE - Create prestart script
✓ CHALLENGE - Create prestart script - SOLUTION
PRACTICE - Custom NPM scripts
CHALLENGE - Run NPM scripts simultaneously
✓ CHALLENGE - Run NPM scripts simultaneously - SOLUTION
LECTURE - NPM .bin Folder with Executable Scripts
PRACTICE - Explore .bin Folder on the Mac
PRACTICE - Explore .bin Folder on Windows
LECTURE - NPM Scripts Wrap-Up
LECTURE - Where MongoDB is used?
LECTURE - Relational vs Document Databases
LECTURE - MongoDB Structure
LECTURE - MongoDB Shell and MongoDB Server
PRACTICE - Installation of the MongoDB on the local computer
PRACTICE - Launch MongoDB Server and connect to it from the MongoDB Shell
PRACTICE - MongoDB database in the Cloud
PRACTICE - Exploring MongoDB Shell
PRACTICE - Installing and Exploring Robo 3T (previously Robomongo)
LECTURE - JSON Overview
LECTURE - Difference between JSON and JavaScript Object
LECTURE - How Documents are stored in the Database? - BSON Format
LECTURE - What is Extended JSON?
LECTURE - Data Types representation in Extended JSON
LECTURE - How types are stored in BSON?
PRACTICE - Creation of the new Collection
LECTURE - Insert Methods insertOne() and insertMany()
LECTURE - Sample Data Overview
PRACTICE - Insert Sample Documents into the Collection
LECTURE - Find Methods find() and findOne()
PRACTICE - Finding Documents
LECTURE - Query Operators Overview
PRACTICE - Finding Documents with Query Operators
LECTURE - Sort, Limit and Skip helper methods
PRACTICE - Sort, Limit and Skip
LECTURE - Update Methods updateOne() and updateMany()
LECTURE - Update Operators
PRACTICE - Updating Documents using Update Operators
LECTURE - Delete Methods deleteOne() and deleteMany()
PRACTICE - Deleting Documents
LECTURE - MongoDB Aggregation Framework
PRACTICE - Aggregating Documents
LECTURE - MongoDB Indexes
LECTURE - MongoDB Utilities
LECTURE - What is MongoDB Replica Set?
LECTURE - MongoDB Drivers
Intro to Additional JavaScript Challenges
EXERCISE FILES
Software Setup
CHALLENGE 1 - Sum numbers
✓ CHALLENGE 1 - Sum numbers - SOLUTION
CHALLENGE 2 - Const
✓ CHALLENGE 2 - Const - SOLUTION
CHALLENGE 3 - Let
✓ CHALLENGE 3 - Let - SOLUTION
CHALLENGE 4 - Hoisting
✓ CHALLENGE 4 - Hoisting - SOLUTION
CHALLENGE 5 - Ternary Operator
✓ CHALLENGE 5 - Ternary Operator - SOLUTION
CHALLENGE 6 - Arrow Functions
✓ CHALLENGE 6 - Arrow Functions - SOLUTION
CHALLENGE 7 - Default parameters
✓ CHALLENGE 7 - Default parameters - SOLUTION
CHALLENGE 8 - Check presence of the function parameters
✓ CHALLENGE 8 - Check presence of the function parameters - SOLUTION
CHALLENGE 9 - Object Destructuring
✓ CHALLENGE 9 - Object Destructuring - SOLUTION
CHALLENGE 10 - Destructuring and Rest Operator
✓ CHALLENGE 10 - Destructuring and Rest Operator - SOLUTION
CHALLENGE 11 - Spread Operator
✓ CHALLENGE 11 - Spread Operator - SOLUTION
CHALLENGE 12 - Copy Array
✓ CHALLENGE 12 - Copy Array - SOLUTION
CHALLENGE 13 - Template Literals
✓ CHALLENGE 13 - Template Literals - SOLUTION
CHALLENGE 14 - Object Destructuring
✓ CHALLENGE 14 - Object Destructuring - SOLUTION
CHALLENGE 15 - Iterate over String
✓ CHALLENGE 15 - Iterate over String - SOLUTION
CHALLENGE 16 - Swap values of the two variables
✓ CHALLENGE 16 - Swap values of the two variables - SOLUTION
CHALLENGE 17 - IIFE (Immediately Invoked Function Expression)
✓ CHALLENGE 17 - IIFE (Immediately Invoked Function Expression) - SOLUTION
CHALLENGE 18 - Classes
✓ CHALLENGE 18 - Classes - SOLUTION
CHALLENGE 19 - Iterate over Object
✓ CHALLENGE 19 - Iterate over Object - SOLUTION
CHALLENGE 20 - Sum positive and negative numbers
✓ CHALLENGE 20 - Sum positive and negative numbers - SOLUTION
Just your computer
Readiness to solve different Challenges yourself
Passion for coding and learning
Become a Senior JavaScript developer by learning and practicing all modern features of the JavaScript. Become able easily apply to Web Developer, Frontend Developer, Backend Developer or Full Stack Web Developer jobs.
Learn JavaScript, ES6, NPM, Webpack, Babel, Node, React by solving tens of CHALLENGES with real-world scenarios. Each CHALLENGE has task and solution. And all of them are available in the GIT repositories that you will download at the beginning of the course.
Learn all FUNDAMENTAL features of the JavaScript starting from basic concepts such as Variables, Objects, Functions, Scopes, Operators and finishing with ADVANCED topics as Closures, Hoisting, IIFEs (Immediately Invoked Function Expressions), Classes and many more.
Learn and understand ES6 features such as Arrow functions, Destructuring, Default function parameters, Template Literals, Array helper methods, Classes
Understand proper methods to work with Arrays - map, forEach, reduce, filter, includes
Deeply understand purpose of the NPM - Node Package Manager
Learn and practice Babel - JavaScript Compiler
Learn basics of the most popular NoSQL database with JavaScript Engine - MongoDB
1.2
1 Học viên
275 Khóa học
1253 Đánh giá
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!
Xem chi tiết