# If...Else

If you're cold, put on a sweater. If you're hot, take the sweater off. Simple, right?

In code, we need to make several thousand decisions per second. Think of a video game that checks for physical collisions or what happens when you click a certain key on the keyboard. The control of data, or *flow control*, can be determined based on boolean logic. `if` a particular value is true, do something. Otherwise, or `else`, do something else (or nothing at all).

## Syntax

{% tabs %}
{% tab title="C++, Java, and Javascript" %}
Same syntax for C++ , Java, Javascript, and many other languages.

```cpp
if (booleanExpression1) {
   // code to be executed if true
}
else if(booleanExpression2) {
   // booleanExpression1 is false and booleanExpression2 is true
}
else if (booleanExpression3) {
   // booleanExpression1 and 2 are false and booleanExpression3 is true
}
.    // "else if" statements are optional and you can have infinitely many
.
else {
   // code to execute if all test expressions are false (optional)
}
```

{% endtab %}

{% tab title="Python" %}
Python syntax is a bit ~~strange~~ different - there are shortened words, it uses white space to exit a block of code, and notice the placement of colons:

```python
if booleanExpression1:
   # statement(s)
elif booleanExpression2:
   # statement(s)
elif booleanExpression3:
   # statement(s)
else:
   # statement(s)
   
#  Note: "elif" and "else" statements are optional
```

{% endtab %}

{% tab title="Other" %}
`If...else` statements are the most basic tool for creating multiple pathways of code. There can also be shortcuts if you are comparing a simple boolean or want to combine items with `And` or `Or` boolean logic.

There is something called the [**`ternary`**](https://en.wikipedia.org/wiki/%3F:) operator. It is used for simple yes/no situations and is worth learning.

```cpp
// C++ ternary example
int a, b = 2, c = 3;
a = (b > c ? b : c);   // since b > c is false, a takes the value of c (3)
```

{% endtab %}
{% endtabs %}

## Example 1: If

Only do something if the condition is true.

```javascript
let someNumber = 5;

if (someNumber < 0) {
    console.log("That's a negative number");
}

// The above code will do absolutely nothing because 5 is NOT less than 0
```

## Example 2: If...else

Run [the following code](https://replit.com/@MatthewBrash/If-Else-Example) to see how we can do something `else` if the condition is false:

{% embed url="<https://replit.com/@MatthewBrash/If-Else-Example?lite=true>" %}
Example 2: If...else
{% endembed %}

## Example 3: If...else if

We can make a secondary check on a condition if the first condition equates to false. In this example, our third statement equates to `true`, so it is run. Notice how there is no *default* set of code in case none of the conditions equate to true:

```javascript
let myName = "Karen";

if (myName == "Lola") {
    console.log("Her name was Lola...");
}
else if (myName == "Jackie") {
    console.log("You mean, like Jackie Chan? Awesome.");
}
else if (myName == "Karen") {
    console.log("What a lovely name!");
}
else if (myName == "Robert") {
    console.log("His name was Robert Paulson...");
}

// This will output: What a lovely name!
```

## Example 4: If...else if...else

Run [this second example](https://repl.it/repls/ShowyStylishOpenlook) to see multiple options and consider how this sort of conditional code can be used.

{% embed url="<https://repl.it/repls/ShowyStylishOpenlook>" %}

## Example 5: With Numbers

Finally, just to get the message home, let's [control things based on a number](https://tech.io/snippet/fRXFS4q) instead of text.

{% embed url="<https://tech.io/snippet/fRXFS4q>" %}
Testing Tech.io instead of Repl.it Tech.io is based on Node.js, so no prompt() or alert()
{% endembed %}

## Important Notes

While all of the examples above do a simple `console.log()` it is important to note that you can do whatever you like inside the code block brackets `{ }`. You can even *nest* another `if` statement, loop, function call, or more.

While I would love to continue with more examples, [**they are very easy to find online**](http://lmgtfy.com/?q=javascript+example+if+statement).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cs.brash.ca/unit-3/conditionals/ifelse.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
