Skip to content

A repository documenting my journey through Hitesh Choudhary's 30-day JavaScript challenge from 'Chai aur Code.' This repo includes core subjects, related questions, DSA, and projects. Accepting the challenge to become a JavaScript pro in 30 days!

Notifications You must be signed in to change notification settings

iamqitmeer/30-days-javascript-challenge-with-chai-aur-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

30 Days JavaScript Challenge with Chai aur Code

πŸš€ Welcome to My JavaScript Journey! πŸš€

Hello everyone,

I am Qitmeer, and I am thrilled to share my journey through the 30-Day JavaScript Challenge by the amazing Hitesh Choudhary, founder of "Chai aur Code." This challenge aims to transform our JavaScript skills by covering core subjects, related questions, data structures and algorithms (DSA), and hands-on project creation.

About the Course

The 30-Day JavaScript Challenge is designed to provide a structured and comprehensive approach to mastering JavaScript. Here are the key details of the course:

  • Duration: 30 days
  • Content: Core JavaScript concepts, related questions, DSA, and project creation
  • Enrollment Deadline: July 14th (No new enrollments will be accepted after this date for this batch)
  • Instructor: Hitesh Choudhary

Why I’m Excited

  1. Structured Learning: The course provides a clear path to mastering JavaScript with a structured approach.
  2. Community Support: Being part of a community of like-minded learners keeps me motivated.
  3. Hands-On Projects: Practical projects will help solidify my understanding and showcase my skills.
  4. Expert Guidance: Learning from Hitesh Choudhary, a seasoned expert, ensures I am getting top-notch instruction.

Goals for the Challenge

  1. Master Core JavaScript Concepts: Deep dive into JavaScript fundamentals and advanced topics.
  2. Solve Complex Problems: Improve my problem-solving skills by tackling related questions and DSA challenges.
  3. Build Real-World Projects: Apply my knowledge to create projects that can be added to my portfolio.
  4. Engage with the Community: Share my progress, get feedback, and support fellow learners.

Daily Progress

I will be updating this repository daily with my progress, including code snippets, projects, and solutions to the challenges I tackle. Follow along and feel free to provide your feedback and suggestions.

Day 1: Variables & Data Types

On the first day, I learned about variables and data types in JavaScript. Understanding how to declare and use variables, as well as the different types of data (strings, numbers, booleans, etc.), is fundamental to writing effective JavaScript code.

Key Concepts Covered:

  • Variable declaration using var, let, and const
  • Primitive data types: string, number, boolean, null, undefined, symbol
  • Non-primitive data types: object (including arrays and functions)

Day 1: Variables & Data Types


Day 2: Operators

On the second day of the 30-Day JavaScript Challenge, I focused on understanding and using various operators in JavaScript. These operators are crucial for performing calculations, making comparisons, and controlling the flow of logic in programs.

Key Concepts Covered

  • Arithmetic and Assignment Operators - Perform basic calculations and modify variable values.
  • Comparison and Logical Operators - Compare values and combine conditions.
  • Ternary Operator - Use for concise conditional expressions.

Day 2: Operators


Day 3: Control Structures / Flow

On the third day of the 30-Day JavaScript Challenge, Today's focus was on control structures and flow, which are essential for directing the execution of code based on various conditions and loops.

Key Concepts Covered

β€’ Implement and understand basic if-else control flow.
β€’ Use nested if-else statements to handle multiple conditions.
β€’ Utilize switch cases for control flow based on specific values.
β€’ Apply the ternary operator for concise condition checking.
β€’ Combine multiple conditions to solve more complex problems.
Day 3: Control Structures / Flow


Day 4: Loops

On the fourth day of the 30-Day JavaScript Challenge, Today's focus was on mastering loops in JavaScript, which are essential for repeating tasks and iterating over data.

Key Concepts Covered

β€’ Understand and use for loops to iterate over a sequence of numbers.
β€’ Utilize while loops for iteration based on a condition.
β€’ Apply do...while loops to ensure the loop body is executed at least once.
β€’ Implement nested loops to solve more complex problems.
β€’ Use loop control statements (break and continue) to control the flow of loops.
Day 4: Loops


Day 5: Functions

On the fifth day of the 30-Day JavaScript Challenge, Today's focus was on mastering functions in JavaScript, which are essential for structuring code, reusability, and solving complex problems efficiently.

Key Concepts Covered

β€’ Understand and define functions using function declarations, expressions, and arrow functions.
β€’ Use function parameters and default values effectively.
β€’ Create and utilize higher-order functions.
β€’ Apply functions to solve common problems and perform calculations.
β€’ Enhance code reusability and organization using functions.
Day 5: Functions


Day 6: Arrays

On the sixth day of the 30-Day JavaScript Challenge, Today's focus was on mastering functions in JavaScript, which are essential for structuring code, reusability, and solving complex problems efficiently.

Key Concepts Covered

β€’ Create and manipulate arrays using various methods.
β€’ Transform and aggregate array data using map, filter, and reduce.
β€’ Iterate over arrays using loops and iteration methods.
β€’ Understand and work with multi-dimensional arrays.
Day 6: Arrays


Day 7: Objects

On the Seventh day of the 30-Day JavaScript Challenge, Today's focus was on mastering objects in JavaScript, which are fundamental for representing and organizing complex data structures.

Key Concepts Covered

  • Object Creation and Manipulation: - Learned how to create and manipulate objects with properties and methods.
  • Using the this Keyword: - Understood and used the this keyword in object methods.
  • Nested Objects and Arrays of Objects: - Worked with nested objects and arrays of objects to handle complex data.
  • Iterating Over Object Properties: - Iterated over an object's properties using loops and built-in methods.

Day 7: Objects


Day 8: ES6+ Features

On Day 8 of the 30-day JavaScript challenge from Chai aur Code, we dive into modern ES6+ features that significantly enhance JavaScript programming. This session covers template literals, destructuring, spread/rest operators, default parameters, and enhanced object literals.

Key Concepts Covered

  1. Template Literals

    • String Interpolation: Embed expressions inside string literals using ${}.
    • Multi-line Strings: Create strings that span multiple lines without needing escape characters.
  2. Destructuring

    • Array Destructuring: Extract values from arrays into distinct variables.
    • Object Destructuring: Extract properties from objects and assign them to variables.
  3. Spread and Rest Operators

    • Spread Operator (...): Expand arrays or objects into individual elements.
    • Rest Parameter (...): Collect multiple arguments into a single array in function definitions.
  4. Default Parameters

    • Define default values for function parameters to handle cases where arguments are not provided.
  5. Enhanced Object Literals

    • Method Definitions: Simplify function definitions within object literals.
    • Computed Property Names: Use expressions as property names in object literals.

Day 8: ES6+ Features


Day 9: DOM Manipulation

On Day 9 of the 30-day JavaScript challenge, we explore modern techniques for manipulating the Document Object Model (DOM) using JavaScript. This session covers selecting and altering DOM elements, creating and appending new elements, removing elements, modifying attributes and classes, and adding event listeners to create interactive web pages.

Key Concepts

  • Selecting DOM Elements: Using methods like getElementById, querySelector, and querySelectorAll to access HTML elements.
  • Manipulating DOM Elements: Changing the content, style, and attributes of elements.
  • Creating and Appending Elements: Dynamically adding new elements to the DOM.
  • Removing Elements: Deleting elements from the DOM.
  • Handling Events: Adding event listeners to respond to user interactions.

Day 9: DOM Manipulation


Day 10: Event Handling

On Day 10, we explored modern event handling techniques that significantly enhance JavaScript programming. We learned how to interact with users through various events and how to manage these events efficiently. This session covers the basics of event handling, form events, event delegation, and how to make web pages interactive.

Key Concepts

  • Basic Events: Introduction to handling common events like clicks, double-clicks, mouse movements, and keyboard actions.
  • Form Events: Techniques for managing events related to form inputs and submissions, enhancing form interactions.
  • Event Delegation: Efficiently manage events for dynamically added elements using event delegation, reducing code duplication.
  • Interactivity: Utilize JavaScript events to create interactive and engaging web pages, responding dynamically to user actions.

Day 10: Event Handling


Day 11: Modern Promises and Async/Await

On Day 11 of the 30-day JavaScript challenge, we explore modern techniques for handling asynchronous operations using Promises and the async/await syntax. These concepts are essential for managing asynchronous code in a more structured and readable way. By the end of this session, you'll be equipped to work with asynchronous data flows effectively.

Key Concepts

  • Promises: Understanding how to create and use promises to handle asynchronous operations, including managing resolved and rejected states.
  • Promise Chaining: Sequencing multiple promises for orderly execution of asynchronous tasks.
  • Async/Await: Leveraging async functions and the await keyword for more readable and concise asynchronous code.
  • Fetching Data: Retrieving data from public APIs using both promises and async/await.
  • Managing Multiple Promises: Using Promise.all and Promise.race to handle multiple concurrent promises.

Day 11: Modern Promises and Async/Await


Day 12: Error Handling

On Day 12 of the 30-day JavaScript challenge, we focus on mastering error handling in JavaScript. Effective error handling ensures that your code is robust and can gracefully manage unexpected situations. By the end of this session, you'll be proficient in various error handling techniques, including the use of try-catch blocks, custom error classes, and handling errors in asynchronous code.

Key Concepts

  • Promises: Understanding how to create and use promises to handle asynchronous operations, including managing resolved and rejected states.
  • Promise Chaining: Sequencing multiple promises for orderly execution of asynchronous tasks.
  • Async/Await: Leveraging async functions and the await keyword for more readable and concise asynchronous code.
  • Fetching Data: Retrieving data from public APIs using both promises and async/await.
  • Managing Multiple Promises: Using Promise.all and Promise.race to handle multiple concurrent promises.

Day 12: Error Handling

Follow My Journey

Stay updated with my progress by following this repository. I am excited to embark on this journey and can't wait to see the progress I make over the next 30 days. Let's code our way to success! πŸ’»πŸš€

Thank you for your support, and feel free to reach out with any questions or feedback.

About

A repository documenting my journey through Hitesh Choudhary's 30-day JavaScript challenge from 'Chai aur Code.' This repo includes core subjects, related questions, DSA, and projects. Accepting the challenge to become a JavaScript pro in 30 days!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published