**Tell us what’s happening:**

i don’t understand why and how this function is defined as

const sum = ()();

how a function starting with these parenthesis and what are about these last parenthesis

**Your code so far**

```
const sum = (function() {
"use strict";
return function sum(...args) {
const args = [ x, y, z ];
return args.reduce((a, b) => a + b, 0);
};
})();
console.log(sum(1, 2, 3)); // 6
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/67.0.3396.99 Safari/537.36`

.

**Link to the challenge:**

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