Q:

Understanding basic javascript logic

I am currently working on learning/practicing DOM manipulation and ran across this tutorial/practice sheet.
https://github.com/lmuntaner/dom_manipulation
I am currently confused on the loop created by the createGrid function.
... The function "createGrid" is created and takes an argument. The function creates a for loop which has another loop nested inside of it... that has the same exact statements as the first one... Why create a separate loop? Why not just have one for loop? Can someone explain this too me? (The guy who wrote this code is far beyond me, but i still would like to understand why)
    $(function () {
  var rows = 10;
  var cols = 10;
  var cells = [];
  function createGrid(root) {
    for(var i = 0; i < cols; i++) {
      for(var j = 0; j < cols; j++) {
        var cell = $('<div>').addClass('cell');
        cells.push(cell);
        root.append(cell);
      }
    }
  };

  var updateState = function() {
    cells.forEach(function (cell) {
      var randomNum = Math.random() * 2;
      if (randomNum > 1) {
        cell.addClass('active');
      } else {
        cell.removeClass('active');
      }
    });
  }

  setInterval(updateState, 500);

  var $root = $('.container');
  createGrid($root);
});

A:

Well, actually I'm pretty sure that's a mistake from the developer. As you think, that has not sense.
Just change the father loop like this:
function createGrid(root) {
    for(var i = 0; i < rows; i++) {
        for(var j = 0; j < cols; j++) {
            var cell = $('<div>').addClass('cell');
            cells.push(cell);
            root.append(cell);
        }
    }
}

Because the common way of create a table or grid, is make rows with the father loop, and the columns with the nested loop.
He just didn't realize his mistake.

