Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Tell us what’s happening:

Hi, can someone explain: What is wrong with this code… and why with the grade A++ it said “You failed the course.” /console/ but supposed to be " You passed the course." Where do I make mistakes?

Your code so far

function getAverage(scores) {
  let sum = 0;

  for (const score of scores) {
    sum += score;
  }

  return sum / scores.length;
}

function getGrade(score) {
  if (score === 100) {
    return "A++";
  } else if (score >= 90) {
    return "A";
  } else if (score >= 80) {
    return "B";
  } else if (score >= 70) {
    return "C";
  } else if (score >= 60) {
    return "D";
  } else {
    return "F";
  }
}

function hasPassingGrade(score) {
  return getGrade(score) !== "F";
}


// User Editable Region

function studentMsg(totalScores, studentScore) {
if (hasPassingGrade(getGrade(studentScore))) {
      return "Class average: " + getAverage(totalScores) + ". Your grade: " + getGrade(studentScore) + ". You passed the course.";
    } else {
      return "Class average: " + getAverage(totalScores) + ". Your grade: " + getGrade(studentScore) + ". You failed the course.";
    }
  }

console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));
console.log(studentMsg([56, 23, 89, 42, 75, 11, 68, 34, 91, 19], 100));

// User Editable Region


Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36

Challenge Information:

Review JavaScript Fundamentals by Building a Gradebook App - Step 4

You are getting too many functions involved. The getGrade function is already used in the hasPassingGrade function. Because you call getGrade in if statement, the hasPassingGrade will try to get the grade for the input you provided. Instead of a score, you give it a letter. Instead of an error, getGrade returns an “F”. And because F is an F, the student fails.

Hi, Thank you for your time . That is supposed to be there. If the grade is F, it should say that the student failed, right? But why does it still say that the student failed if the grade is A++? There is my mistake I think, but I don’t know how to fix it. Can you explain further?

Finally, I figured it out , that hasPassingGrade function has to have the studentScore as parameter but not getGrade function inside with studentScore parameter. Anyway, thank you for your time :slight_smile: