01 - JavaScript Basics
What is JavaScript?
JavaScript is a programming language that runs in your browser. It lets you add interactivity to websites — from simple button clicks to complex web applications.
// This is a comment — ignored by JavaScript
console.log("Hello, World!"); // Prints to the browser consoleVariables
Variables store data that you can use and change later:
// let — can be reassigned
let name = "Alice";
name = "Bob"; // ✅ works
// const — cannot be reassigned
const age = 25;
age = 26; // ❌ error — cannot reassign a constant
// var — old way (avoid using it)
var city = "NYC";Rule of thumb: Use const by default. Use let only when you need to reassign the variable. Don't use var.
Data Types
JavaScript has several primitive types:
// String — text
let greeting = "Hello";
let message = 'Single quotes work too';
let template = `Template literals can include ${greeting}`;
// Number — integers and decimals
let count = 42;
let price = 19.99;
let negative = -10;
// Boolean — true or false
let isActive = true;
let isComplete = false;
// Undefined — variable declared but not assigned
let notSet;
console.log(notSet); // undefined
// Null — intentionally empty
let empty = null;
// Check the type
console.log(typeof greeting); // "string"
console.log(typeof count); // "number"
console.log(typeof isActive); // "boolean"Operators
Arithmetic Operators
let a = 10;
let b = 3;
console.log(a + b); // 13 — addition
console.log(a - b); // 7 — subtraction
console.log(a * b); // 30 — multiplication
console.log(a / b); // 3.333... — division
console.log(a % b); // 1 — remainder (modulo)
console.log(a ** b); // 1000 — exponentiation (10^3)
// Increment and decrement
let x = 5;
x++; // x is now 6
x--; // x is now 5 againComparison Operators
console.log(5 == "5"); // true — loose equality (converts types)
console.log(5 === "5"); // false — strict equality (checks type too)
console.log(5 != "5"); // false — loose inequality
console.log(5 !== "5"); // true — strict inequality
console.log(10 > 5); // true
console.log(10 < 5); // false
console.log(10 >= 10); // true
console.log(5 <= 4); // falseAlways use === and !== — they're safer because they check both value and type.
Logical Operators
let isLoggedIn = true;
let isAdmin = false;
console.log(isLoggedIn && isAdmin); // false — AND: both must be true
console.log(isLoggedIn || isAdmin); // true — OR: at least one must be true
console.log(!isLoggedIn); // false — NOT: inverts the valueString Operations
let first = "Hello";
let last = "World";
// Concatenation
let message = first + " " + last; // "Hello World"
// Template literals (preferred)
let greeting = `${first} ${last}!`; // "Hello World!"
// String methods
console.log(message.length); // 11
console.log(message.toLowerCase()); // "hello world"
console.log(message.toUpperCase()); // "HELLO WORLD"
console.log(message.includes("World")); // true
console.log(message.startsWith("Hello")); // true
console.log(message.replace("World", "There")); // "Hello There"Type Coercion
JavaScript tries to convert types automatically (sometimes unexpectedly):
console.log("5" + 5); // "55" — string concatenation
console.log("5" - 5); // 0 — number subtraction
console.log("5" * "2"); // 10 — both converted to numbers
console.log(true + 1); // 2 — true becomes 1
console.log(false + 1); // 1 — false becomes 0To avoid surprises, explicitly convert types:
// String to number
let str = "42";
let num = Number(str); // 42
let parsed = parseInt(str); // 42
// Number to string
let count = 100;
let text = String(count); // "100"
let concat = count + ""; // "100" (quick trick)
// To boolean
Boolean(1); // true
Boolean(0); // false
Boolean("hello"); // true
Boolean(""); // falseConditionals
Make decisions in your code:
let age = 18;
if (age >= 18) {
console.log("Adult");
} else if (age >= 13) {
console.log("Teenager");
} else {
console.log("Child");
}
// Ternary operator — shorthand for simple if/else
let status = age >= 18 ? "Adult" : "Minor";Key Takeaways
- Use
constby default,letwhen you need to reassign - JavaScript has 6 primitive types: string, number, boolean, undefined, null, symbol
- Always use
===for comparisons (strict equality) - Template literals (
`) are the modern way to build strings - Be aware of type coercion — explicitly convert when needed