Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Tell us what’s happening:

Been stuck your for about two weeks and tried all the possible ways it should be but still not working.

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(totalScores = getAverage()) {
   "Class average: 71.7. Your grade: F. You failed the course.";
  } else {
    return getGrade();
  }
}
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

// 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/137.0.0.0 Safari/537.36

Challenge Information:

Review JavaScript Fundamentals by Building a Gradebook App - Step 4

This is not the correct approach. Also, getAverage() takes a parameter. Normally, in a conditional, two values are compared but here you are assigning totalScores to getAverage().

Your studentMsg() function should return the message given in the instructions, only it should be dynamic, so that “average-goes-here” and “grade-goes-here” are replaced with the results of calling getAverage() and getGrade(), respectively.

  • Use the getAverage function to get the class average.
  • Use the getGrade function to get the student’s grade.

I tried it and still not working.

Please post your updated code. What did you try?

function studentMsg(totalScores, studentScore) {
return “Class average: 71.7. Your grade: F. You failed the course.”
return “Class average: 58.8. Your grade: A++. You passed the course.”;
}
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

It looks like you have hard-coded conditionals or variables that check for specific expected values. That is not solving this problem in the general case. Imagine if you were given different input values. Would your code be able to solve those problems?

To find out more about what hard-coding is or about why it is not suitable for solving coding questions, please read this post: Hard-coding For Beginners

Let us know if you have a question about how to make your code more flexible.

What is it about this instruction you do not understand? Do you know how to call a function? Do you know how to concatenate a string that includes the value of variables?

thank you, i applied a different approach from your explanation and was able to use the getAverage() but the second part is still not working. please i would appreciate assistance with the next approach.

totalScores == getAverage
  return  "Class average: " + "71.7. " + "Your grade: " + "F. "  + "You failed the course."

  studentScore == getGrade 
  return "Class average: " + "50.8. " +  "Your grade: A++. " + "You passed the course."

i believe the concatenation is correct? what am i getting wrong?

A few questions

  1. Why are you using == between those two values?

  2. Why are you only using those two specific return values instead of using the actual grade and class averages based upon the input to the function?

I see you are very new to JavaScript, so let’s just take it a step at a time.

First of all, the studentMsg() function takes two parameters, totalScores and studentScore.

That console.log() statement below the studentMsg() function is calling the studentMsg() function and passing those parameters to it.

So, inside the studentMsg() function, you would first want to find out what the average of all the student scores is.

Which parameter do you think will contain all of the student scores?

the second parameter.

why do you think that the second parameter contains ALL the scores?

console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

What is the value of the second parameter that was passed to studentMsg() here? And what is the name of the second parameter?