Tell us what’s happening:
Please please please, dont use advanced exercises when you teach another problem,
Please use something basic so we can learn the idea of the lesson, not how advanced JavaScript is,
What is the (function() { } )() construct in JavaScript?
Turn out, it’s an ImmediatelyInvoked Function Expressiono or IIFE and it is can also be written with ES6’s arrow function ( the last lesson we just learnt on FreeCodeCamp )
I have to search a whole day for that, not for Rest Operator I am learning,
Also about Map() Filter() and Reduce() are quite advanced but FreeCodeCamp doesnt have any lesson about it, but it appeared a lot on the exercises.
Many exercises are hard not because their problem themselves, but because of other advanced syntaxes on the code, that we have never seen before on FreeCodeCamp, ( of course I can search it on google, but what is the idea of FreeCodeCamp  a place for studying code or just teach something easy with hard exercises? )
Sorry if I say too much, I know the idea of shut up and keep google when get stuck, but it would be nice if FreeCodeCamp can have more common sense system :
 Easy first  hard later
 Exercises just show something from this lesson and the previous only
 If something are important, and are shown on many exercises; please let it on one lesson first.
or do I study the wrong order ? I just finished Basic JavaScript and study ES6, so many new things come up on exercises.
Which is the good order to study for newbies ?
Can FreeCodeCamp sort the section from easy to hard so many newbies like me will not be confused anymore,
Sorry for talking too much,
Thanks for reading,
I’m so stupid and really stress right now and any reply would be greatly appreciated.
Javascript Algorithms And Data Structures Certification (300 hours)

Basic JavaScript

ES6

Regular Expressions

Debugging

Basic Data Structures

Basic Algorithm Scripting

Object Oriented Programming

Functional Programming

Intermediate Algorithm Scripting

JavaScript Algorithms and Data Structures Projects
Your code so far
const sum = (function() {
"use strict";
return function sum(x, y, z) {
const args = [ x, y, z ];
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/75.0.3770.100 Safari/537.36
.
Link to the challenge:
https://learn.freecodecamp.org/javascriptalgorithmsanddatastructures/es6/usetherestoperatorwithfunctionparameters/