**Tell us what’s happening:**

Hey guys, i am on ES6 section and the stuff are getting more complicated and the course are so fast but it’s funny though.

up to now i am confused with functions inside each other, two returns one in another and these braces, brackets and last semi colon at the last line

could anyone help me get these stuffs

Thanks

first question: `})();`

second are in Rest Operator challenge:

```
const sum = (function() {
"use strict";
**this one ->** return function sum(...args) {
//const args = [ x, y, z ];
**and this ->** return args.reduce((a, b) => a + b, 0);
};
})();
console.log(sum(1, 2, 3)); // 6
```

**Your code so far**

```
const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];
let arr2;
(function() {
"use strict";
arr2 = [...arr1]; // change this line
})();
console.log(arr2);
```

**Your browser information:**

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

.

**Link to the challenge:**

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/use-the-spread-operator-to-evaluate-arrays-in-place