Nesting For Loops – why arr[i][j]

Tell us what’s happening:
I figured the solution out and saw your posts on this topic, but can someone please explain to me why product *= arr[i][j]; work? specifically the arr[i][j] with [i][j] stacked next to each other… was there a lesson I forgot/missed? I understand *= is to multiply all of it… just the [i][j] next together is confusing to me… thanks

Your code so far

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line
  for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr[i].length; j++) {
      product *= arr[i][j];
  // Only change code above this line
  return product;

// Modify values below to test your code

Your browser information:

Your Browser User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36.

Link to the challenge:

was there a lesson I forgot/missed?

Might want to review this challenge in the Basic JavaScript section:

1 Like

ahhhh thank you so much @RandellDawson !

I realized I posted the same challenge you were already asking about. So, I guess the answer to your question is no, you did not forget something you had already seen. This was the first time you were being exposed to multi-dimensional arrays and how to access them with the [ ][ ] syntax. Sorry if I confused you more. :slightly_smiling_face:

No actually I already pass that challenge, it was within the Nesting for Loops challenge but it came up then. So you actually reminded me by pointing me to that challenge… so thanks again! :slight_smile:

I think it is time for me to go to sleep.

1 Like

Additional question to all if anyone wouldn’t mind to take the time to explain it to me:

I understand that:

product += 5; \ will add 5 to product and return the sum of it or
product *= 5; \ will multiply product by 5 and return the result, but

can someone explain why calling the sub array [j] within array [i] in this instance, as the way it is coded…

for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
product *= arr[i][j];

will multiply them all together? Just trying to understand the logic behind the code.

Thanks in advance.

1 Like

Best demonstrated with some console.log statements. Click the “open in” in upper right-hand corner of the framed solution below.


oh dang @RandellDawson thank you!!! I didn’t know such a tool existed… I’ll be using this a lot now !!