Grasping the rest parameter

const sum = (…args) => {
return args.reduce((a, b) => a + b, 0);
}

In this lesson I can understand how we are using the arrow function to create a nameless function that accepts (…args) and how args.reduce is used to return a single value for the arguments passed in but what I fail to grasp is this portion of the code ((a, b) => a + b, 0).

Im feeling dense because even after watching the fcc youtube video on this subject im still not understanding what role a, b, and 0 are doing in that segment of code.

Any help would be appreciated, thank you !

((a, b) => a + b, 0)

these are the two arguments of the reduce method
first there is a function, (a, b) => a + b
and then there is a number, 0

the second optional number of the reduce method is the starting value of the accumulator

I’m not sure I am allowed to link to other websites but after some light reading and your reply I believe i have a better understanding.

So the a is the accumulator and the b is the current value and the 0 is, like you said, the starting value of the accumulator , as well as the first element in the array if no initial value is supplied.

Then it simply takes a + b .

One last question since b is the current value. when this particular part of code is executed does the code go through iterations where b will equal the value of each entry in the array at one point or another when it is (being) added to a or is b equal to the sum of array already ?

after the first iteration, the accumulator is the returned value of previous iteration
and the current value is the current value of the array being iterated

Alrighty I believe I am understanding it now. Now that I know that the rest parameter does go through iterations of sorts to reach the sum of the entire array it makes it a lot easier to visualize , which for me personally will help me apply it elsewhere and retain the information.