code: function compareVersions(versions) {
      // 1) get common precision for both versions, for example for "10.0" and "9" it should be 2
      var precision = Math.max(getVersionPrecision(versions[0]), getVersionPrecision(versions[1]));
      var chunks = map(versions, function (version) {
        var delta = precision - getVersionPrecision(version);
  
        // 2) "9" -> "9.0" (for precision = 2)
        version = version + new Array(delta + 1).join(".0");
  
        // 3) "9.0" -> ["000000000"", "000000009"]
        return map(version.split("."), function (chunk) {
          return new Array(20 - chunk.length).join("0") + chunk;
        }).reverse();
      });
  
      // iterate in reverse order by reversed chunks array
      while (--precision >= 0) {
        // 4) compare: "000000009" > "000000010" = false (but "9" > "10" = true)
        if (chunks[0][precision] > chunks[1][precision]) {
          return 1;
        }
        else if (chunks[0][precision] === chunks[1][precision]) {
          if (precision === 0) {
            // all version chunks are same
            return 0;
          }
        }
        else {
          return -1;
        }
      }
    }
docs: Calculate browser version weight
  
  @example
  compareVersions(['1.10.2.1',  '1.8.2.1.90'])    // 1
  compareVersions(['1.010.2.1', '1.09.2.1.90']);  // 1
  compareVersions(['1.10.2.1',  '1.10.2.1']);     // 0
  compareVersions(['1.10.2.1',  '1.0800.2']);     // -1
  
  @param  {Array<String>} versions versions to compare
  @return {Number} comparison result