🧠 Comparison and Logical Operators in JavaScript

🧠 Comparison and Logical Operators in JavaScript

(The rehabilitation center for those who say “This if worked yesterday…”) 😄

Writing JavaScript sometimes feels like this:

“I said it very clearly,
but JavaScript understood something completely different.”

Why?

Comparison and logic rules.

JavaScript is not stupid — it’s just too flexible.
Let’s turn that flexibility into an advantage.


🔍 1. Comparison Operators

“Are we the same, similar, or just a coincidence?”


🟡 == (Loose Equality – “Ignore the type” mode)

5 == "5"      // true
true == 1     // true
false == 0    // true

What’s happening here?

JavaScript says:

“Hold on… let me convert these to the same type first.”

So:

  • "5" → gets converted to a number
  • then compared

❌ Where’s the problem?

This behavior creates unpredictable bugs.

📌 Rule:
== doesn’t lie to you — it’s just too forgiving.


🟢 === (Strict Equality – “Serious relationship”)

5 === "5"   // false
5 === 5     // true

Here JavaScript asks:

  • Are the values the same?
  • Are the types the same?

If both aren’t yesfalse

📌 Professional reflex:
Use ===, lean back, relax.


🔴 != and !== (Not Equal)

5 != "5"    // false
5 !== "5"   // true

  • != → “Aren’t we similar?”
  • !== → “Aren’t we the same person?”

🎯 In real life:
Use !==, avoid drama.


📏 Greater Than / Less Than Comparisons

10 > 5     // true
4 < 2      // false
8 >= 8     // true

But…

"10" > 2   // true 😐

Why?

JavaScript:

  • Converts "10" to a number
  • Then compares

📌 Tip:
Before comparing, you control the types — don’t leave it to JavaScript.


🧠 2. Logical Operators

“When there’s more than one condition, things get serious.”


🔗 && (AND)

“We’ll talk only if everything is true.”

let age = 22;
let license = true;

if (age >= 18 && license) {
  console.log("You can drive 🚗");
}

Logic:

  • Is the left side true?
  • Is the right side true?
  • Are both yes?

📌 Rule:
If even one is false → result is false

Short-circuit detail:

false && console.log("won’t run");

The right side never runs.
JavaScript says:

“It’s already false, why bother?”


🔀 || (OR)

“One is enough, no need to push it.”

let admin = false;
let editor = true;

if (admin || editor) {
  console.log("Access granted 🔓");
}

Logic:

  • If the left is true → stop
  • Otherwise, check the right

📌 Golden tip (used a LOT):

let name = userName || "Guest";

If userName is:

  • empty → "Guest"
  • filled → its own value

🔄 ! (NOT)

“Reverse psychology operator.”

let isLoggedIn = false;

if (!isLoggedIn) {
  console.log("You need to log in 🔐");
}

What did it do?

  • false → turned into true
  • true → turned into false

📌 The double exclamation legend:

!!"hello"  // true
!!0        // false

👉 The shortest way to convert a value to boolean


⚠️ 3. Truthy & Falsy

“Not everyone tells the truth in JavaScript.”

❌ Falsy values:

false
0
""
null
undefined
NaN

These are treated as false inside if.


✅ Everything else is truthy:

"0"      // true
[]       // true
{}       // true
"false"  // true (this is where irony begins)

📌 Beginner trap:

if (age) {
  // If age = 0, this will NOT run
}

✅ Safer approach:

if (age !== undefined && age !== null) {
}


🧪 4. Real-Life Scenarios

🛒 Cart Check

if (cart.length > 0 && userLoggedIn) {
  checkout();
}

🧠 Explanation:

  • Is the cart empty?
  • Is the user logged in?

If both yes → checkout starts


🔐 Role Check

if (role === "admin" || role === "moderator") {
  openPanel();
}

One is enough → access granted


🧯 5. Most Common Mistakes (And How to Escape)

❌ Using ==
❌ Letting JS handle type conversion
❌ Writing if without knowing truthy/falsy
❌ Mixing up 0, "", and null

✅ Use ===
✅ Check things explicitly
✅ You control the code — not JavaScript


🧠 Final Lesson (Worth Gold)

Writing if statements in JavaScript
is not just about writing conditions.

It’s about telling JavaScript exactly what you mean.

The clearer you are:

  • fewer bugs
  • fewer “why didn’t this work?”
  • more “wow, this is clean code” 😌

🚀

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir