# If-Else statement
An if-else statement lets you specify which portions to code the interpreter must run based on the result of an expression.

The syntax of an if-else statement is the following:
```py
if condition: {
    # Executed when the condition is true
} else {
    # Executed when the condition is false
}
```
Unlike expressions statements, they don't end with a `;`.

The condition may be any type of expression, but must evaluate to a boolean type. No implicit casts are performed. 

When the `else` block is empty, it can me omitted:
```py
if condition: {
    # Executed when the condition is true
}
```

If the blocks only contain one statement, it's possible to omit the curly brackets:
```py
if condition:
    doSomething();
else
    doSomethingElse();
```

## If-else chains
Since curly brackets can be dropped for blocks with only one statement, the following code:
```py
if cond0: {
    doSomething();
} else {
    if cond1: {
        doSomethingElse();
    } else {
        doSomethingDumb();
    }
}
```
can be simplified to
```py
if cond0: {
    doSomething();
} else if cond1: {
    doSomethingElse();
} else {
    doSomethingDumb();
}
```
creating a chain of if-else statements.

## Compound statements
Actually the meaning of the curly brackets is to group multiple statements into one.

The if-else statement expects only one statement for each branch, though it's possible to provide more than one statement each by wrapping them into curly brackets.

## Scopes
If-else and compound statements don't create new scopes, which means that variables defined inside one of those statements will be accessible outside of them:
```py
if 1 < 2:
    a = 10;
# Here "a" is still defined.
print(a); # Prints 10
```
```py
{
    a = 1;
}
print(a); # Prints 1
```