**Tell us what’s happening:**

Hi Guys,

I understand the reduce function, but I don’t understand how a + b are the only two letters used for three numbers. From my understanding 0 is the initial value than once the function runs it becomes zero plus the first number. Then the value of the that number is added to the next, and so on. I don’t understand how the numbers from the array are assigned to these letters, and then the function knows how to do add the numbers, and then plug in the next one in. A step by step explanation would be very helpful. Thank You!

**Your code so far**

```
const sum = (function() {
"use strict";
return function sum(...args) {
return args.reduce((a, b) => a + b, 0);
};
})();
console.log(sum(1, 2, 3)); // 6
```

**Your browser information:**

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36`

.

**Link to the challenge:**

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/use-the-rest-operator-with-function-parameters