sub*selects* are temporary, they can't be updated. It sounds like you want a temporary table
CREATE TEMP TABLE temp_grades AS
SELECT school, grade FROM simulated_records;
UPDATE temp_grades SET grade = 'A';
EDIT: re your comment:
UPDATE simulated_records
FROM (SELECT id FROM simulated_records WHERE school='Yale' LIMIT 10) AS result
SET grade='A'
WHERE id = result.id
RETURNING *;
The above uses the UPDATE FROM table operation using a subselect
EDIT 2: for second comment:
Assuming you don't have a typo maybe you have an old version. There's an alternative way to do this with better support:
UPDATE simulated_records SET grade = 'A' WHERE id IN
(SELECT id FROM simulated_records WHERE school = 'Yale' LIMIT 10);