**An example of using List class foldLeft method** (documentation):

`val l1: Int = List(1,2,3).foldLeft(20)((a, b) => a + b) = ((20 + 1) + 2) + 3 = 26 `

**foldLeft** calculation starts from the initial value 20, consecutively iterates over all list elements, from the leftmost to the rightmost, adding the preceding iteration result to the list current element value.

Step 0. Calculation starts from the **initial value** **20**

Step 1. **a** is equal to **20** (the initial value), **b** is equal to **1** (the list first element value), so **(a + b)** = (20 + 1) produces **21**

Step 2. **a** is equal to **21** (the first step result), **b** is equal to **2** (the list second element value), so **(a + b)** = (21 + 2) produces **23**

Step 3. **a** is equal to **23** (the second step result), **b** is equal to **3** (the list third element value), so **(a + b)** = (23 + 3) produces **26**

Wildcard operators can be used in **foldLeft**. The expression above can also be written as follows:

`val l1: Int = List(1,2,3).foldLeft(20)(_ + _)`

**An example of using List class foldRight method** (documentation):

`val l2: Int = List(1,2,3).foldRight(20)((a, b) => a - b) = 1 - (2 - (3 - 20) = -18`

**foldRight** calculation starts from the initial value 20, consecutively iterates over all list elements, from the rightmost to the leftmost, subtracting the preceding iteration result from the list current element value.

Step 0. Calculation starts from the **initial value** **20**

Step 1. **a** is equal to **3** (the list last element value), **b** is equal to **20** (the initial value), so **(a – b)** = (3 – 20) produces **-17**

Step 2. **a** is equal to **2** (the list second element value), **b** is equal to **-17** (the first step result), so **(a – b)** = (2 – (-17)) produces **19**

Step 3. **a** is equal to **1** (the list first value), **b** is equal to **19** (the second step result), so **(a – b)** = (1 – 19) produces **-18**

As with **foldLeft**, wildcard operators can be used in **foldRight**. So, the expression above can also be written as follows:

`val l2: Int = List(1,2,3).foldRight(20)(_ - _)`