Decision making and branching allow a program to execute different code depending on conditions or loop through code repeatedly. There are conditional and unconditional control statements. Conditional statements include if, if-else, nested if-else, else-if ladder, switch case, and ternary operator (?). Unconditional statements include goto. If statements execute code if a condition is true. If-else and else-if statements choose between code blocks. Switch case matches a variable to case values. The ternary operator is a short-hand for if-else. Goto unconditionally jumps to a label.