It has to be my order of operations since the definition calculates the value when called, but I can't seem to target where the issue comes from. Suggestions?

**ERROR MESSAGE:**

`Oops, try again. grades_variance([6, 5, 6, 9, 3, 0, 5]) returned 46.8571428571 instead of the expected: 6.693877551`

**CODE:**

```
grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]
def print_grades(grades):
for grade in grades:
print grade
def grades_sum(grades):
total = 0
for grade in grades:
total += grade
return total
def grades_average(grades):
sum_of_grades = grades_sum(grades)
average = sum_of_grades / float(len(grades))
return average
def grades_variance(scores):
average = grades_average(scores)
variance = 0
for score in scores:
variance = variance + ((average - score) ** 2)
total_variance = variance / len(scores)
return variance
print grades_variance(grades)
```