# I don't understand this code

Tell us what’s happening:

can someone help me understand this code.
Thanks for any help !

``````
function smallestCommons(arr) {
arr.sort((a, b) => b - a);
var newArr = [];
for (let i = arr[0]; i >= arr[1]; i--) {
newArr.push(i);
}
var quot = 0;
var loop = 1;
var n;
do {
quot = newArr[0] * loop * newArr[1];
for (n = 2; n < newArr.length; n++) {
if (quot % newArr[n] !== 0) {
break;
}
}
loop++;
} while (n !== newArr.length)
return quot;
}

console.log(smallestCommons([1,7]));

``````

User Agent is: `Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36`.

Challenge: Smallest Common Multiple

What parts of the code confuse you?

I will note, this isn’t a particularly efficient solution and the approach might be unintuitive for some people.

``````//this creates a function taking the array of numbers [1,7] which are logged bellow
function smallestCommons(arr) {
//this sort the numbers of 1,7 from low to high if it's letters it will go alphabetically
arr.sort
//this compares a and b
//the => means even or more
//so if a and b are equal or more then b-a
((a, b) => b - a);
//a new array is declared it's empty now
var newArr = [];
//for loop the 1 starts at the 0 since 0indexing of the array so if u have a array from 1 through 7 it starts at 1
for (let i = arr[0];
//same happens here but now i is compared to the 2nd number of the array
i >= arr[1];
// i -1
i--) {
//this pushes the new array over i adding i each time
newArr.push(i);
}
var quot = 0; //quote---> 0
var loop = 1;//loop--> 1
var n; //n is a variable now
do { //ok idk what do does??
quot = newArr[0] * loop * newArr[1]; //0 value is now set to the start of the new array x the loop x the 2nd value of new array
for (n = 2; n < newArr.length; n++) {
//condition with for loop
``````

i think u can figure the rest out now

Big picture, the code is checking multiples of the product of smallest number provided (`newArr[0]`) and the smallest number plus one (`newArr[1] = newArr[0] +1`) until one of these multiples is divisible by all of the values in the range. `do` is another way to write a loop.